/**
* $id$
* Copyright 2011-2012 Renren Inc. All rights reserved.
*/
package com.renren.api.connect.android.friends;
import java.util.concurrent.Executor;
import android.os.Bundle;
import com.renren.api.connect.android.Renren;
import com.renren.api.connect.android.Util;
import com.renren.api.connect.android.common.AbstractRequestListener;
import com.renren.api.connect.android.exception.RenrenError;
import com.renren.api.connect.android.exception.RenrenException;
/**
*
* @author hecao (he.cao@renren-inc.com)
* friends相关接口
*
*/
public class FriendsHelper {
private Renren renren;
public FriendsHelper(Renren renren) {
this.renren = renren;
}
/**
* 同步调用 friends.get接口
*
* @param param
* 请求参数
* @return 返回{@link FriendsGetResponseBean}对象
* @throws RenrenException
* @throws Throwable
*/
public FriendsGetResponseBean getFriends(FriendsGetRequestParam param) throws RenrenException, Throwable {
Bundle parameters = param.getParams();
FriendsGetResponseBean responseBean = null;
try {
String response = renren.requestJSON(parameters);
if (response != null) {
Util.checkResponse(response, Renren.RESPONSE_FORMAT_JSON);
responseBean = new FriendsGetResponseBean(response);
return responseBean;
} else {
Util.logger("null response");
throw new RenrenException(RenrenError.ERROR_CODE_UNKNOWN_ERROR, "null response", "null response");
}
} catch (RuntimeException re) {
Util.logger("runtime exception" + re.getMessage());
throw new Throwable(re);
}
}
/**
* 异步调用friends.get接口
*
* @param pool
* 线程池
* @param param
* 请求参数
* @param listener
* 请求回调
*/
public void asyncGetFriends(Executor pool, final FriendsGetRequestParam param, final AbstractRequestListener<FriendsGetResponseBean> listener) {
pool.execute(new Runnable() {
@Override
public void run() {
try {
FriendsGetResponseBean bean = getFriends(param);
if (listener != null) {
listener.onComplete(bean);
}
} catch (RenrenException e) {
Util.logger("renren exception " + e.getMessage());
if (listener != null) {
listener.onRenrenError(new RenrenError(e.getErrorCode(), e.getMessage(), e.getMessage()));
}
} catch (Throwable e) {
Util.logger("on fault " + e.getMessage());
if (listener != null) {
listener.onFault(e);
}
}
}
});
}
/**
* 同步调用friends.getFriends接口
*
* @param param
* 请求参数
* @return 返回{@link FriendsGetFriendsResponseBean}对象
* @throws RenrenException
* @throws Throwable
*/
public FriendsGetFriendsResponseBean getFriends (FriendsGetFriendsRequestParam param) throws RenrenException, Throwable {
Bundle parameters = param.getParams();
FriendsGetFriendsResponseBean responseBean = null;
try {
String response = renren.requestJSON(parameters);
if (response != null) {
Util.checkResponse(response, Renren.RESPONSE_FORMAT_JSON);
responseBean = new FriendsGetFriendsResponseBean(response);
return responseBean;
} else {
Util.logger("null response");
throw new RenrenException(RenrenError.ERROR_CODE_UNKNOWN_ERROR, "null response", "null response");
}
} catch (RuntimeException re) {
Util.logger("runtime exception" + re.getMessage());
throw new Throwable(re);
}
}
/**
* 异步调用friends.getFriends接口
*
* @param pool
* 线程池
* @param param
* 请求参数
* @param listener
* 请求回调
*/
public void asyncGetFriends(Executor pool, final FriendsGetFriendsRequestParam param, final AbstractRequestListener<FriendsGetFriendsResponseBean> listener) {
pool.execute(new Runnable() {
@Override
public void run() {
try {
FriendsGetFriendsResponseBean bean = getFriends(param);
if (listener != null) {
listener.onComplete(bean);
}
} catch (RenrenException e) {
Util.logger("renren exception " + e.getMessage());
if (listener != null) {
listener.onRenrenError(new RenrenError(e.getErrorCode(), e.getMessage(), e.getMessage()));
}
} catch (Throwable e) {
Util.logger("on fault " + e.getMessage());
if (listener != null) {
listener.onFault(e);
}
}
}
});
}
}