package com.moupress.app.friendshost.sns.Renren; import java.io.File; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.os.Parcel; import android.util.Log; import android.widget.Toast; import com.moupress.app.friendshost.Const; import com.moupress.app.friendshost.PubSub; import com.moupress.app.friendshost.R; import com.moupress.app.friendshost.sns.FeedEntry; import com.moupress.app.friendshost.sns.SnsUtil; import com.moupress.app.friendshost.sns.Listener.SnsEventListener; import com.moupress.app.friendshost.util.NotificationTask; import com.moupress.app.friendshost.util.Pref; import com.renren.api.connect.android.AsyncRenren; import com.renren.api.connect.android.Renren; import com.renren.api.connect.android.common.AbstractRequestListener; import com.renren.api.connect.android.exception.RenrenAuthError; import com.renren.api.connect.android.exception.RenrenError; import com.renren.api.connect.android.feed.FeedPublishRequestParam; import com.renren.api.connect.android.feed.FeedPublishResponseBean; import com.renren.api.connect.android.photos.PhotoUploadRequestParam; import com.renren.api.connect.android.photos.PhotoUploadResponseBean; import com.renren.api.connect.android.users.UsersGetInfoRequestParam; import com.renren.api.connect.android.users.UsersGetInfoResponseBean; import com.renren.api.connect.android.view.RenrenAuthListener; public class RenrenUtil extends SnsUtil{ //friendshost //private static final String API_KEY = "7872469fdd144ef792233e56dca0eb31"; //private static final String SECRET_KEY = "938ebb14322d40c89015483b2479d144"; //private static final String APP_ID = "166341"; //melonfriends private static final String API_KEY = "ff40a6bf3ae2421fab637a16ed990f67"; private static final String SECRET_KEY = "61e107d1d35f4a41a3df5742df12f8ba"; private static final String APP_ID = "199556"; private static final String TAG = "RenrenUtil"; private static final String[] PERMISSIONS = new String[] { "read_user_feed", "publish_feed", "read_user_share", "publish_share", "read_user_status", "publish_comment", "photo_upload", "create_album", "read_user_album", "operate_like"}; //private PubSub zPubSub; //private Context zContext; //private Activity zActivity; private Renren zRenren; private static AsyncRenren asyncRenren; private NotificationTask notificationTask; public RenrenUtil(PubSub pubSub) { //zPubSub = pubSub; //zContext = zPubSub.fGetContext(); //zActivity = zPubSub.fGetActivity(); super(pubSub, Const.SNS_RENREN); this.zRenren = new Renren(API_KEY, SECRET_KEY, APP_ID, zContext); this.logImg = R.drawable.fh_renren_logo; //fRenrenAuth(); } @Override public boolean isSessionValid() { if (zRenren != null ) { return zRenren.isSessionKeyValid(); } else { return false; } } @Override public void fSnsAuth(final SnsEventListener snsEventListener,final boolean uptPref) { if ( isSessionValid() ) { this.SnsAddEventCallback(snsEventListener,uptPref); return; } final AbstractRequestListener<UsersGetInfoResponseBean> userinfo_listener = new AbstractRequestListener<UsersGetInfoResponseBean>(){ @Override public void onComplete(UsersGetInfoResponseBean bean) { String renren_headurl = bean.getUsersInfo().get(0).getTinyurl(); Pref.setMyStringPref(zContext, Const.LOGIN_HEAD_RENREN, renren_headurl); } @Override public void onRenrenError(RenrenError renrenError) { } @Override public void onFault(Throwable fault) { } }; final RenrenAuthListener listener = new RenrenAuthListener() { @Override public void onComplete(Bundle values) { //Toast.makeText(zContext, "Renren Auth Complete",Toast.LENGTH_SHORT).show(); SnsAddEventCallback(snsEventListener,uptPref); asyncRenren = fGetAsyncRenren(); asyncRenren.getUsersInfo(new UsersGetInfoRequestParam(new String[]{zRenren.getCurrentUid()+""}), userinfo_listener); } @Override public void onRenrenAuthError(RenrenAuthError renrenAuthError) { Log.d(TAG, renrenAuthError.getMessage()); Toast.makeText(zContext, "Renren Auth Failed", Toast.LENGTH_SHORT).show(); } @Override public void onCancelLogin() { } @Override public void onCancelAuth(Bundle values) { } }; zRenren.authorize(zActivity, PERMISSIONS, listener); } public AsyncRenren fGetAsyncRenren() { if (asyncRenren == null) { fSnsAuth(null,false); asyncRenren = new AsyncRenren(zRenren); } return asyncRenren; } /** * type 描述 * 10 更新状态的新鲜事。 * 11 page更新状态的新鲜事。 * 20 发表日志的新鲜事。 * 21 分享日志的新鲜事。 * 22 page发表日志的新鲜事。 * 23 page分享日志的新鲜事。 * 30 上传照片的新鲜事。 * 31 page上传照片的新鲜事。 * 32 分享照片的新鲜事。 * 33 分享相册的新鲜事。 * 34 修改头像的新鲜事。 * 35 page修改头像的新鲜事。 * 36 page分享照片的新鲜事。 * 40 成为好友的新鲜事。 * 41 成为page粉丝的新鲜事。 * 50 分享视频的新鲜事。 * 51 分享链接的新鲜事。 * 52 分享音乐的新鲜事。 * 53 page分享视频的新鲜事。 * 54 page分享链接的新鲜事。 * 55 page分享音乐的新鲜事。 */ @Override public void fGetNewsFeed(final Context context) { //AsyncRenren asyncRenren = new AsyncRenren(zRenren); asyncRenren = fGetAsyncRenren(); //FeedExtractRequestParam param = new FeedExtractRequestParam("XML", "10,11,20,21,22,23,30,31,32,33,34", 1); FeedExtractRequestParam param = new FeedExtractRequestParam("json", "10,11,20,21,22,23,30,31,32,33,34", 1); AbstractRequestListener<FeedExtractResponseBean> listener = new AbstractRequestListener<FeedExtractResponseBean>(){ @Override public void onComplete(final FeedExtractResponseBean bean) { //System.out.println("Renren news feed get listener on complete"); Log.i(TAG, "Renren news feed get listener on complete"); zPubSub.fGetFeedOrganisor().fSaveNewFeeds(bean, context); } @Override public void onRenrenError(RenrenError renrenError) { System.out.println(" onRenrenError Extract Request Response Bean !"); } @Override public void onFault(Throwable fault) { System.out.println(" onFault Extract Request Response Bean !"); } }; asyncRenren.getFeed(param, listener, false); } // no working yet public void fPostComments(String feedID, String message) { if (zRenren != null) { String[] comment = message.split("%"); String comment_user_id = comment[0]; String commentMsg = comment[1]; Bundle parameters = new Bundle(); parameters.putString("method", "status.addComment"); parameters.putString("owner_id", comment_user_id); parameters.putString("content", commentMsg); parameters.putString("status_id", feedID); String response = zRenren.requestJSON(parameters); System.out.println(response); } } @Override public void fPublishFeeds(Bundle params, final Context context) { //String name, String description,String url, String imageUrl, String caption, String message if (zRenren != null) { //AsyncRenren asyncRenren = new AsyncRenren(zRenren); if (!isSessionValid()) { fSnsAuth(null, false); } asyncRenren = fGetAsyncRenren(); //showProgress(); String name = params.getString(Const.SNAME); String description = params.getString(Const.SPHOTOPREVIEWDESCRIPTION); String url = params.getString(Const.SLINK); String imageUrl = params.getString(Const.SHEADIMG); String caption = params.getString(Const.SPHOTOPREVIEWCAPTION); String message = params.getString(Const.SMSGBODY); FeedPublishRequestParam param = new FeedPublishRequestParam( (name != null ? name : " "), (description != null ? description : " "), (url != null ? url : " "), (imageUrl != null ? imageUrl : ""), (caption != null ? caption : ""), null, null,(message != null ? message : "")); this.startNotification(4, "Feed"); AbstractRequestListener<FeedPublishResponseBean> listener = new AbstractRequestListener<FeedPublishResponseBean>() { @Override public void onComplete(final FeedPublishResponseBean bean) { Log.d(TAG, bean.toString()); stopNotification(); } @Override public void onFault(final Throwable fault) { Log.d(TAG, fault.getMessage()); stopNotification(); } @Override public void onRenrenError(final RenrenError renrenError) { Log.d(TAG, renrenError.getMessage()); stopNotification(); } }; asyncRenren.publishFeed(param, listener, true); } } //public void fDisplayRenrenFeed() { // @Override // public void fDisplayFeed(){ // zActivity.runOnUiThread(new Runnable() { // public void run() { //// ArrayAdapter<String> adapterRenrenResponse = zPubSub.fGetArrAdapterFeed(); //// adapterRenrenResponse.clear(); //// String[] feedMsg = zPubSub.fGetFeedOrganisor().fGetUnReadNewsFeedSummary(Const.SNS_RENREN); //// for(int i= 0; i<feedMsg.length;i++) { //// adapterRenrenResponse.add(feedMsg[i]); //// } //// adapterRenrenResponse.notifyDataSetChanged(); // // LstViewFeedAdapter feedAdapter = zPubSub.fGetAdapterFeedPreview(); // feedAdapter.clear(); // ArrayList<FeedEntry> feeds = zPubSub.fGetFeedOrganisor().fGetUnReadNewsFeed(Const.SNS_RENREN); // for (FeedEntry item : feeds ) { // feedAdapter.addItem(item); // } // feedAdapter.notifyDataSetChanged(); // } // }); // } public void onComplete (int requestCode, int resultCode, Intent data) { if (zRenren != null ) { zRenren.authorizeCallback(requestCode, resultCode, data); } } public void fUploadPic(String message, String selectedImagePath) { if (zRenren != null) { if (!isSessionValid()) { fSnsAuth(null, false); } //AsyncRenren asyncRenren = new AsyncRenren(zRenren); asyncRenren = fGetAsyncRenren(); PhotoUploadRequestParam photoParam = new PhotoUploadRequestParam(); photoParam.setCaption(message); photoParam.setFile(new File(selectedImagePath)); startNotification(3,"Picture"); asyncRenren.publishPhoto(photoParam,new AbstractRequestListener<PhotoUploadResponseBean>(){ @Override public void onComplete(PhotoUploadResponseBean bean) { Log.d(TAG, bean.toString()); stopNotification(); } @Override public void onFault(Throwable fault) { Log.d(TAG, fault.getMessage()); stopNotification(); } @Override public void onRenrenError(RenrenError renrenError) { Log.d(TAG, renrenError.getMessage()); stopNotification(); }}); } } private void startNotification(int notificationId,String fileType) { notificationTask = new NotificationTask(this.zContext); if(notificationTask != null) { notificationTask.SetNotificationTask(notificationId, "Renren", fileType); notificationTask.execute(0); } } private void stopNotification() { if(notificationTask != null) { notificationTask.setTaskDone(true); } } @Override public void fResend(FeedEntry feed) { // //String name = (feed.getsName() == null?" ":feed.getsName()); // String name = " "; // String description = (feed.getsPhotoPreviewDescription() == null? " ":feed.getsPhotoPreviewDescription()); // String link = (feed.getsPhotoPreviewLink() == null ? " ":feed.getsPhotoPreviewLink()); // String imgUrl = (feed.getsPhotoPreviewLink() == null ? " ":feed.getsPhotoPreviewLink()); // String caption = (feed.getsPhotoPreviewCaption() == null ? " ":feed.getsPhotoPreviewCaption()); // String msg = (feed.getsMsgBody() == null ? " ":feed.getsMsgBody()); // String story = (feed.getsStory()==null? " ":feed.getsStory()); // this.fPublishFeeds(name, description, link, imgUrl, caption, msg+story); } @Override public void fLikeFeeds(Bundle params, final Context context) { String likeUrl = "http://www.renren.com/g?ownerid=%s&resourceid=%s&type=%s"; if (zRenren != null) { Bundle parameters = new Bundle(); parameters.putString("method", "like.like"); int iResType = Integer.parseInt(params.getString(Const.SFEEDTYPE)); String sResType = ""; if (iResType >= 20 && iResType < 30 ) { sResType = "blog"; } else if (iResType >= 30 && iResType < 40 && iResType != 33) { sResType = "photo"; } else if (iResType == 33) { sResType = "album"; } likeUrl = String.format(likeUrl, params.getString(Const.SOWNERID), params.getString(Const.SRESOURCEID), sResType); parameters.putString("url", likeUrl); //parameters.putString("url", "http://photo.renren.com/photo/227794402/photo-6166039326"); String response = zRenren.requestJSON(parameters); System.out.println(response); } } @Override public void fUnLikeFeeds(Bundle params, final Context context) { String likeUrl = "http://www.renren.com/g?ownerid=%s&resourceid=%s&type=%s"; if (zRenren != null) { Bundle parameters = new Bundle(); parameters.putString("method", "like.unlike"); int iResType = Integer.parseInt(params.getString(Const.SFEEDTYPE)); String sResType = ""; if (iResType >= 20 && iResType < 30 ) { sResType = "blog"; } else if (iResType >= 30 && iResType < 40 && iResType != 33) { sResType = "photo"; } else if (iResType == 33) { sResType = "album"; } likeUrl = String.format(likeUrl, params.getString(Const.SOWNERID), params.getString(Const.SRESOURCEID), sResType); parameters.putString("url", likeUrl); String response = zRenren.requestJSON(parameters); System.out.println(response); } } public void fLogout(Bundle params) { if (zRenren != null) { zRenren.logout(zContext); } } @Override public void fShareFeeds(Bundle params, final Context context) { } }