/*
* Copyright (C) 2010-2013 The SINA WEIBO Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.sina.weibo.sdk.openapi.models;
import java.util.ArrayList;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
/**
* 微博结构体。
*
* @author SINA
* @since 2013-11-22
*/
public class Status {
/** 微博创建时间 */
public String created_at;
/** 微博ID */
public String id;
/** 微博MID */
public String mid;
/** 字符串型的微博ID */
public String idstr;
/** 微博信息内容 */
public String text;
/** 微博来源 */
public String source;
/** 是否已收藏,true:是,false:否 */
public boolean favorited;
/** 是否被截断,true:是,false:否 */
public boolean truncated;
/**(暂未支持)回复ID */
public String in_reply_to_status_id;
/**(暂未支持)回复人UID */
public String in_reply_to_user_id;
/**(暂未支持)回复人昵称 */
public String in_reply_to_screen_name;
/** 缩略图片地址(小图),没有时不返回此字段 */
public String thumbnail_pic;
/** 中等尺寸图片地址(中图),没有时不返回此字段 */
public String bmiddle_pic;
/** 原始图片地址(原图),没有时不返回此字段 */
public String original_pic;
/** 地理信息字段 */
public Geo geo;
/** 微博作者的用户信息字段 */
public User user;
/** 被转发的原微博信息字段,当该微博为转发微博时返回 */
public Status retweeted_status;
/** 转发数 */
public int reposts_count;
/** 评论数 */
public int comments_count;
/** 表态数 */
public int attitudes_count;
/** 暂未支持 */
public int mlevel;
/**
* 微博的可见性及指定可见分组信息。该 object 中 type 取值,
* 0:普通微博,1:私密微博,3:指定分组微博,4:密友微博;
* list_id为分组的组号
*/
public Visible visible;
/** 微博配图地址。多图时返回多图链接。无配图返回"[]" */
public ArrayList<String> pic_urls;
/** 微博流内的推广微博ID */
//public Ad ad;
public static Status parse(String jsonString) {
try {
JSONObject jsonObject = new JSONObject(jsonString);
return Status.parse(jsonObject);
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
public static Status parse(JSONObject jsonObject) {
if (null == jsonObject) {
return null;
}
Status status = new Status();
status.created_at = jsonObject.optString("created_at");
status.id = jsonObject.optString("id");
status.mid = jsonObject.optString("mid");
status.idstr = jsonObject.optString("idstr");
status.text = jsonObject.optString("text");
status.source = jsonObject.optString("source");
status.favorited = jsonObject.optBoolean("favorited", false);
status.truncated = jsonObject.optBoolean("truncated", false);
// Have NOT supported
status.in_reply_to_status_id = jsonObject.optString("in_reply_to_status_id");
status.in_reply_to_user_id = jsonObject.optString("in_reply_to_user_id");
status.in_reply_to_screen_name = jsonObject.optString("in_reply_to_screen_name");
status.thumbnail_pic = jsonObject.optString("thumbnail_pic");
status.bmiddle_pic = jsonObject.optString("bmiddle_pic");
status.original_pic = jsonObject.optString("original_pic");
status.geo = Geo.parse(jsonObject.optJSONObject("geo"));
status.user = User.parse(jsonObject.optJSONObject("user"));
status.retweeted_status = Status.parse(jsonObject.optJSONObject("retweeted_status"));
status.reposts_count = jsonObject.optInt("reposts_count");
status.comments_count = jsonObject.optInt("comments_count");
status.attitudes_count = jsonObject.optInt("attitudes_count");
status.mlevel = jsonObject.optInt("mlevel", -1); // Have NOT supported
status.visible = Visible.parse(jsonObject.optJSONObject("visible"));
JSONArray picUrlsArray = jsonObject.optJSONArray("pic_urls");
if (picUrlsArray != null && picUrlsArray.length() > 0) {
int length = picUrlsArray.length();
status.pic_urls = new ArrayList<String>(length);
JSONObject tmpObject = null;
for (int ix = 0; ix < length; ix++) {
tmpObject = picUrlsArray.optJSONObject(ix);
if (tmpObject != null) {
status.pic_urls.add(tmpObject.optString("thumbnail_pic"));
}
}
}
//status.ad = jsonObject.optString("ad", "");
return status;
}
}