package org.kvj.lima1.gae.sync.rest; import java.io.IOException; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.amber.oauth2.common.OAuth; import org.codehaus.jettison.json.JSONObject; import org.kvj.lima1.gae.sync.data.FileStorage; import com.google.appengine.api.blobstore.BlobKey; import com.google.appengine.api.blobstore.BlobstoreService; import com.google.appengine.api.blobstore.BlobstoreServiceFactory; public class UploadServlet extends OAuthSecuredServlet { BlobstoreService blobstoreService = BlobstoreServiceFactory .getBlobstoreService(); private static final long serialVersionUID = 1L; @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String name = req.getParameter("name"); String app = req.getParameter("app"); Map<String, BlobKey> blobs = blobstoreService.getUploadedBlobs(req); BlobKey file = blobs.get("file"); log.info("Upload: " + name + " - " + file); if (null != name && null != file) { String result = FileStorage.upload(app, (String) req.getAttribute(OAuth.OAUTH_CLIENT_ID), file, name); if (null != result) { throw new ServletException(result); } writeJSON(new JSONObject(), resp); } else { throw new ServletException("Invalid parameters"); } } @Override protected JSONObject get(HttpServletRequest req) throws Exception { JSONObject result = new JSONObject(); result.put( "u", blobstoreService.createUploadUrl("/rest/file/upload?name=" + req.getParameter("name") + "&oauth_token=" + req.getAttribute(OAuth.OAUTH_TOKEN) + "&app=" + req.getParameter("app"))); return result; } }