package com.electronapps.LJPro; import java.io.File; import java.io.UnsupportedEncodingException; import java.util.HashMap; import java.util.Map; import java.util.Set; import org.apache.http.entity.StringEntity; import org.apache.http.entity.mime.content.FileBody; import org.apache.http.entity.mime.content.StringBody; import org.json.JSONObject; import org.scribe.builder.ServiceBuilder; import org.scribe.builder.api.DefaultApi10a; import org.scribe.model.OAuthRequest; import org.scribe.model.Response; import org.scribe.model.Token; import org.scribe.model.Verb; import org.scribe.oauth.OAuthService; import com.electronapps.LJPro.FlickrAPI.FlickrBaseEncoder; import com.zmosoft.flickrfree.MultipartEntityMonitored; import android.content.Context; import android.content.res.Resources; import android.util.Log; public class PhotoBucketAPI extends DefaultApi10a { private static final String API_BASE="http://api.photobucket.com"; private static final String BASE_LOGIN=API_BASE+"/login"; private static final String ALBUM_ENDPOINT="/album"; private static final String UPLOAD_ENDPOINT="%2FMobile%20Uploads/upload"; private static final String AUTHORIZATION_URL = "http://photobucket.com/apilogin/login?oauth_token=%s"; private OAuthService mPBAuth; private Token mToken; private String mUsername; private PhotoAPIBase mBase=new PhotoAPIBase(); private String mDomain; private Context mContext; @Override public String getAccessTokenEndpoint() { // TODO Auto-generated method stub return BASE_LOGIN+"/access"; } public PhotoBucketAPI() { } public PhotoBucketAPI (Context context,Token token,String username,String domain){ Resources res=context.getResources(); mPBAuth= new ServiceBuilder() .provider(PhotoBucketAPI.class) .apiKey(res.getString(R.string.photobucket_key)) .apiSecret(res.getString(R.string.photobucket_secret)) .build(); mToken=token; mContext=context; mUsername=username; mDomain=domain; } @Override public String getAuthorizationUrl(Token requestToken) { // TODO Auto-generated method stub return String.format(AUTHORIZATION_URL, requestToken.getToken()); } @Override public String getRequestTokenEndpoint() { // TODO Auto-generated method stub return BASE_LOGIN+"/request"; } public Boolean createAlbum(){ OAuthRequest request = new OAuthRequest(Verb.POST,API_BASE+ALBUM_ENDPOINT+"/"+mUsername+UPLOAD_ENDPOINT); request.addBodyParameter("format","json"); request.addBodyParameter("name","MobileUploads" ); mPBAuth.signRequest(mToken, request); String content=request.getBodyContents(); try { request = new OAuthRequest(Verb.POST,"http://"+mDomain+ALBUM_ENDPOINT+"/"+mUsername+UPLOAD_ENDPOINT); request.addPayload(content); Response response=request.send(); String resp=response.getBody(); JSONObject json=mBase.parseJSONObject(resp); if (json.getString("status").equals("OK")||json.getString("code").equals("116")) { return true; } Log.d("CREATEALBUM",json.toString()); } catch (Throwable e) { // TODO Auto-generated catch block Log.e("PBCREATEALBUM",e.getMessage(),e); } return false; } public HashMap<String,String> uploadPhoto(String subdomain,Token token,String photopath, String title){ OAuthRequest request = new OAuthRequest(Verb.POST,API_BASE+ALBUM_ENDPOINT+"/"+mUsername+UPLOAD_ENDPOINT); request.addBodyParameter("format","json"); HashMap<String,String> photodata=new HashMap<String,String>(); if (title.length()!=0) request.addBodyParameter("title", title); request.addBodyParameter("type", "image"); mPBAuth.signRequest(mToken, request); Map<String,String> params=request.getBodyParams(); Set<String> keys=params.keySet(); try { MultipartEntityMonitored postbody=new MultipartEntityMonitored(mContext,photopath,title); for (String key:keys) { postbody.addPart(key,new StringBody(params.get(key))); } postbody.addPart("uploadfile",new FileBody(new File(photopath))); //http://api861.photobucket.com/album/Mobile%20Uploads String resp=mBase.doPost("http://"+mDomain+ALBUM_ENDPOINT+"/"+mUsername+UPLOAD_ENDPOINT,postbody); JSONObject json=mBase.parseJSONObject(resp); JSONObject content=json.getJSONObject("content"); photodata.put("source",content.getString("url")); photodata.put("link",content.getString("browseurl")); Log.d("PBUPLOAD",json.toString()); } catch (Throwable e) { // TODO Auto-generated catch block Log.e("PBUPLOAD",e.getMessage(),e); } return photodata; } }