REST API:PackageDownloadClient
From AgileApps Support Wiki
The PackageDownloadClient demo program extends the REST API:BaseClient class to download a package from the platform to your local system.
package demo.rest; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.MultivaluedMap; import org.apache.wink.client.ClientResponse; import org.apache.wink.client.ClientWebException; import org.apache.wink.client.Resource; import org.apache.wink.common.internal.utils.MediaTypeUtils; import org.apache.wink.common.model.multipart.InMultiPart; import org.apache.wink.common.model.multipart.InPart; /** * Download a package from the platform to the local system. * This program extends demo.rest.BaseClient.java * which in turn makes use of demo.rest.BaseUtil.java to handle * logging in, logging out, and message formatting. */ public class PackageDownloadClient extends BaseClient { public static void main(String[] args) { // packageId is the unique id associated with the package. // Get it from the platform UI while viewing a package. String packageId = "761fb822e95d48c498d4c4f97dd1470b"; String lastPublishedVersion="true"; String downloadPackageUrl = baseUrl + "/package/operation/download/" + packageId+"?lastPublishedVersion="+lastPublishedVersion; // Instantiate BaseClient.client and get sessionId PackageDownloadClient client = new PackageDownloadClient(); cookieString = client.login(); try { Resource resource = getResource(downloadPackageUrl); resource.header("Cookie", cookieString); ClientResponse response = resource.accept(MediaTypeUtils.MULTIPART_MIXED).post( ClientResponse.class, ""); InMultiPart iMultiPart = response.getEntity(InMultiPart.class); while (iMultiPart.hasNext()) { InPart iPart = iMultiPart.next(); String contentType = iPart.getContentType(); if (contentType.contains(MediaType.APPLICATION_XML)) { InputStream ips = iPart.getInputStream(); echoResponse(ips); } else if (contentType.contains(MediaType.APPLICATION_OCTET_STREAM)) { MultivaluedMap<String, String> headers = iPart.getHeaders(); String cDHeader = headers.getFirst("Content-Disposition"); String fileName = ""; Pattern p = Pattern.compile("filename=.*"); Matcher m = p.matcher(cDHeader); if (m.find()) { fileName = m.group(); } fileName = fileName.replace("filename=", ""); File packageZipFile = new File("c:\\" + fileName); FileOutputStream fos = null; fos = new FileOutputStream(packageZipFile); InputStream is = iPart.getInputStream(); int size = 0; int i = 0; byte[] ba = new byte[8196]; while ((i = is.read(ba)) != -1) { fos.write(ba, 0, i); size += i; } fos.close(); System.out.println("Package downloaded to " + packageZipFile.getAbsolutePath()); } else { System.out.println("Unrecognized media type: " + contentType); } } } catch (ClientWebException webException) { echoResponse(webException); } catch (IOException io) { io.printStackTrace(); } catch (Exception e) { System.out.println(e.getMessage()); e.printStackTrace(); } finally { client.logout(); } } }