/** * */ package iqq.im.action; import iqq.im.QQActionListener; import iqq.im.QQException; import iqq.im.bean.QQGroup; import iqq.im.core.QQConstants; import iqq.im.core.QQContext; import iqq.im.core.QQSession; import iqq.im.core.QQStore; import iqq.im.event.QQActionEvent; import iqq.im.http.QQHttpRequest; import iqq.im.http.QQHttpResponse; import org.apache.log4j.Logger; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; /** * 获取群列表名称 * * @author ChenZhiHui * @create-date 2013-2-21 */ public class GetGroupListAction extends AbstractHttpAction { private static final Logger LOG = Logger .getLogger(GetGroupListAction.class); public GetGroupListAction(QQContext context, QQActionListener listener) { super(context, listener); } @Override public QQHttpRequest onBuildRequest() throws QQException, JSONException { QQSession session = getContext().getSession(); JSONObject json = new JSONObject(); json.put("vfwebqq", session.getVfwebqq()); QQHttpRequest req = createHttpRequest("POST", QQConstants.URL_GET_GROUP_NAME_LIST); req.addPostValue("r", json.toString()); req.addHeader("Referer", QQConstants.REFFER); return req; } @Override protected void onHttpStatusOK(QQHttpResponse response) throws QQException, JSONException { // {"retcode":0,"result":{"gmasklist":[{"gid":1000,"mask":0},{"gid":1638195794,"mask":0},{"gid":321105219,"mask":0}], // "gnamelist":[{"flag":16777217,"name":"iQQ","gid":1638195794,"code":2357062609},{"flag":1048577,"name":"iQQ核心开发区","gid":321105219,"code":640215156}],"gmarklist":[]}} QQStore store = getContext().getStore(); JSONObject json = new JSONObject(response.getResponseString()); int retcode = json.getInt("retcode"); if (retcode == 0) { // 处理好友列表 JSONObject results = json.getJSONObject("result"); JSONArray groupJsonList = results.getJSONArray("gnamelist"); // 群列表 JSONArray groupMaskJsonList = results.getJSONArray("gmasklist"); //禁止接收群消息标志:正常 0, 接收不提醒 1, 完全屏蔽 2 for (int i = 0; i < groupJsonList.length(); i++) { JSONObject groupJson = groupJsonList.getJSONObject(i); QQGroup group = new QQGroup(); group.setGin(groupJson.getLong("gid")); group.setCode(groupJson.getLong("code")); group.setFlag(groupJson.getInt("flag")); group.setName(groupJson.getString("name")); //添加到Store store.addGroup(group); } for(int i = 0; i < groupMaskJsonList.length(); i++) { JSONObject maskObj = groupMaskJsonList.getJSONObject(i); long gid = maskObj.getLong("gid"); int mask = maskObj.getInt("mask"); QQGroup group = store.getGroupByGin(gid); if(group != null) { group.setMask(mask); } } notifyActionEvent(QQActionEvent.Type.EVT_OK, store.getGroupList()); } else { LOG.warn("unknown retcode: " + retcode); notifyActionEvent(QQActionEvent.Type.EVT_ERROR, null); } } }