REST API:PackageDownloadClient

From AgileApps Support Wiki
Revision as of 01:29, 3 December 2010 by imported>Aeric
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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>