Difference between revisions of "REST API:PackageDownloadClient"
From LongJump Support Wiki
imported>Aeric |
imported>Aeric |
||
Line 26: | Line 26: | ||
* which in turn makes use of demo.rest.BaseUtil.java to handle | * which in turn makes use of demo.rest.BaseUtil.java to handle | ||
* logging in, logging out, and message formatting. | * logging in, logging out, and message formatting. | ||
*/ | */ | ||
public class PackageDownloadClient extends BaseClient | public class PackageDownloadClient extends BaseClient | ||
{ | { | ||
public static void main(String[] args) | public static void main(String[] args) | ||
{ | { | ||
// packageId is the unique id associated with the package. | // packageId is the unique id associated with the package. | ||
// | // Get it from the platform UI while viewing a package. | ||
String packageId = "761fb822e95d48c498d4c4f97dd1470b"; | String packageId = "761fb822e95d48c498d4c4f97dd1470b"; | ||
String lastPublishedVersion="true"; | String lastPublishedVersion="true"; | ||
Line 43: | Line 41: | ||
// Instantiate BaseClient.client and get sessionId | // Instantiate BaseClient.client and get sessionId | ||
PackageDownloadClient client = new PackageDownloadClient(); | PackageDownloadClient client = new PackageDownloadClient(); | ||
cookieString = client.login(); | |||
try | try | ||
{ | { | ||
Resource resource = getResource(downloadPackageUrl); | Resource resource = getResource(downloadPackageUrl); | ||
resource.header("Cookie", | resource.header("Cookie", cookieString); | ||
ClientResponse response = | ClientResponse response = |
Latest revision as of 20:02, 3 February 2012
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(); } } }