package com.qq.open.qzone.photo;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;
import com.qq.open.common.OpenQqConstants;
import com.qq.open.common.OpenQqUtils;
import com.qq.open.common.json.JSONArray;
import com.qq.open.common.json.JSONException;
import com.qq.open.common.json.JSONObject;
import com.qq.open.qzone.bean.param.QqListAlbumParamBean;
import com.qq.open.qzone.bean.result.QqAlbumInfoBean;
import com.qq.open.qzone.bean.result.QqListAlbumResultBean;
/**
* 获取登录用户的相册列表
*
* @author HaoLiang
* @version 0.1.1
*/
public class QqListAlbum {
/** QQ互联工具类 */
private OpenQqUtils oqu = new OpenQqUtils();
/** 日志 */
private Logger log = Logger.getLogger(QqListAlbum.class);
/**
* 获取相册列表
*
* @param paramBean 参数
* @return 相册信息
* @throws IOException
*/
public QqListAlbumResultBean getListAlbum(QqListAlbumParamBean paramBean) throws IOException {
// 日志
log.info("获取相册列表 开始...");
// 获取创建相册的参数
String listAlbumUrl = this.getListAlbumUrl(paramBean);
// 获取接口返回的内容
String jsonData = oqu.doGet(listAlbumUrl);
// 相册信息
QqListAlbumResultBean resultBean = this.getAlbumInfoList(jsonData);
// 日志
log.info("获取相册列表 开始...");
return resultBean;
}
/**
* 获取相册列表的URL
*
* @param paramBean 参数
* @return 获取相册列表的URL
*/
private String getListAlbumUrl(QqListAlbumParamBean paramBean) {
// 获取用户相册列表的参数
StringBuilder paramData = new StringBuilder();
// 获取登录用户的相册列表接口地址
paramData.append(OpenQqConstants.QQ_LIST_ALBUM_URL);
// AccessToken
paramData.append("?access_token=" + paramBean.getAccessToken());
// AppId
paramData.append("&oauth_consumer_key=" + oqu.getConfigValue("qq.appid"));
// Openid
paramData.append("&openid=" + paramBean.getOpenId());
// 定义API返回的数据格式
paramData.append("&format=json");
return paramData.toString();
}
/**
* 获取用户空间相册的详细信息
*
* @param jsonData 接口返回的数据
* @param qqu 工具类
* @return 相册的详细信息
*/
private QqListAlbumResultBean getAlbumInfoList(String jsonData) {
// 获取用户相册接口的信息
QqListAlbumResultBean albumResultBean = new QqListAlbumResultBean();
// 相册详细信息
List<QqAlbumInfoBean> albumList = null;
JSONObject jsonObjRoot;
try {
// 加载所有的数据
jsonObjRoot = new JSONObject(jsonData);
// 接口返回错误的场合
if (jsonObjRoot.getInt("ret") > 0) {
// 设置错误标识为真
albumResultBean.setErrorFlg(true);
// 设置错误编号
albumResultBean.setErrorCode(jsonObjRoot.get("ret").toString());
// 设置错误信息
albumResultBean.setErrorMes(jsonObjRoot.getString("msg"));
return albumResultBean;
}
// 相册详细信息
albumList = new ArrayList<QqAlbumInfoBean>();
// 获取所有的相册的集合
JSONArray albumArray = jsonObjRoot.getJSONArray("album");
// 循环取出每个相册的信息
for (int i = 0; i < albumArray.length(); i++) {
// 相册信息
QqAlbumInfoBean bean = new QqAlbumInfoBean();
// 循环取出每个相册的信息
JSONObject jsonObjTemp = new JSONObject(albumArray.get(i).toString());
// 相册ID
bean.setAlbumId(jsonObjTemp.getString("albumid"));
// 相册分类ID
bean.setClassId(jsonObjTemp.getInt("classid"));
// 相册封面图像地址
bean.setCoverUrl(jsonObjTemp.getString("coverurl"));
// 相册创建时间
bean.setCreateTime(oqu.timeStampToDate(jsonObjTemp.get("createtime").toString()));
// 相册描述
bean.setDesc(jsonObjTemp.getString("desc"));
// 相册名称
bean.setName(jsonObjTemp.getString("name"));
// 照片数
bean.setPicnum(jsonObjTemp.getInt("picnum"));
// 相册权限
bean.setPriv(jsonObjTemp.getInt("priv"));
albumList.add(bean);
}
} catch (JSONException e) {
e.printStackTrace();
}
// 设置所有相册的信息
albumResultBean.setAlbumInfoList(albumList);
return albumResultBean;
}
}