REST API:PackageDownloadClient
The PackageDownloadClient demo program extends the REST API:BaseClient class to download a package from the platform to your local system.
- <syntaxhighlight lang="java" enclose="div" style="overflow: auto">
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 {
static String sessionId = "";
public static void main(String[] args) { // packageId is the unique id associated with the package. // It can be retrieved from the 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(); sessionId = client.login(); try { Resource resource = getResource(downloadPackageUrl); resource.header("Cookie", "JSESSIONID=" + sessionId);
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(); } }
}
</syntaxhighlight>