package com.openfeint.internal.request; import org.apache.http.HttpEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpUriRequest; import com.openfeint.internal.request.multipart.FilePart; import com.openfeint.internal.request.multipart.MultipartHttpEntity; import com.openfeint.internal.request.multipart.Part; import com.openfeint.internal.request.multipart.PartSource; import com.openfeint.internal.request.multipart.StringPart; import com.openfeint.internal.resource.BlobUploadParameters; public class BlobPostRequest extends BaseRequest { @Override public boolean signed() { return false; } BlobUploadParameters mParams; protected PartSource mPartSource; String mContentType; @Override public String method() { return "POST"; } // Since blob posts go to another server, you have to overload url as well as path. public String url() { return mParams.action; } public void sign() { // lol nop } public String path() { return ""; } protected HttpUriRequest generateRequest() { if (null == mPartSource) { // This will generate a servercode 0 failure. return null; } HttpPost retval = new HttpPost(url()); int idx = 0; Part parts[] = new Part[6]; parts[idx++] = new StringPart("AWSAccessKeyId", mParams.AWSAccessKeyId); parts[idx++] = new StringPart("acl", mParams.acl); parts[idx++] = new StringPart("key", mParams.key); parts[idx++] = new StringPart("policy", mParams.policy); parts[idx++] = new StringPart("signature", mParams.signature); parts[idx++] = new FilePart("file", mPartSource, mContentType, null); HttpEntity e = new MultipartHttpEntity(parts); retval.setEntity(e); addParams(retval); return retval; } private IRawRequestDelegate mDelegate; public BlobPostRequest(BlobUploadParameters params, PartSource partSource, String contentType) { super(null); mParams = params; mPartSource = partSource; mContentType = contentType; } @Override public void onResponse(int responseCode, byte[] body) { if (mDelegate != null) { mDelegate.onResponse(responseCode, new String(body)); } } public void setDelegate(IRawRequestDelegate mDelegate) { this.mDelegate = mDelegate; } }