WBModel.h 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353
  1. //
  2. // WBModel.h
  3. // YYKitExample
  4. //
  5. // Created by ibireme on 15/9/4.
  6. // Copyright (c) 2015 ibireme. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. /// 认证方式
  10. typedef NS_ENUM(NSUInteger, WBUserVerifyType){
  11. WBUserVerifyTypeNone = 0, ///< 没有认证
  12. WBUserVerifyTypeStandard, ///< 个人认证,黄V
  13. WBUserVerifyTypeOrganization, ///< 官方认证,蓝V
  14. WBUserVerifyTypeClub, ///< 达人认证,红星
  15. };
  16. /// 图片标记
  17. typedef NS_ENUM(NSUInteger, WBPictureBadgeType) {
  18. WBPictureBadgeTypeNone = 0, ///< 正常图片
  19. WBPictureBadgeTypeLong, ///< 长图
  20. WBPictureBadgeTypeGIF, ///< GIF
  21. };
  22. /**
  23. 一个图片的元数据
  24. */
  25. @interface WBPictureMetadata : NSObject
  26. @property (nonatomic, strong) NSURL *url; ///< Full image url
  27. @property (nonatomic, assign) int width; ///< pixel width
  28. @property (nonatomic, assign) int height; ///< pixel height
  29. @property (nonatomic, strong) NSString *type; ///< "WEBP" "JPEG" "GIF"
  30. @property (nonatomic, assign) int cutType; ///< Default:1
  31. @property (nonatomic, assign) WBPictureBadgeType badgeType;
  32. @end
  33. /**
  34. 图片
  35. */
  36. @interface WBPicture : NSObject
  37. @property (nonatomic, strong) NSString *picID;
  38. @property (nonatomic, strong) NSString *objectID;
  39. @property (nonatomic, assign) int photoTag;
  40. @property (nonatomic, assign) BOOL keepSize; ///< YES:固定为方形 NO:原始宽高比
  41. @property (nonatomic, strong) WBPictureMetadata *thumbnail; ///< w:180
  42. @property (nonatomic, strong) WBPictureMetadata *bmiddle; ///< w:360 (列表中的缩略图)
  43. @property (nonatomic, strong) WBPictureMetadata *middlePlus; ///< w:480
  44. @property (nonatomic, strong) WBPictureMetadata *large; ///< w:720 (放大查看)
  45. @property (nonatomic, strong) WBPictureMetadata *largest; ///< (查看原图)
  46. @property (nonatomic, strong) WBPictureMetadata *original; ///<
  47. @property (nonatomic, assign) WBPictureBadgeType badgeType;
  48. @end
  49. /**
  50. 链接
  51. */
  52. @interface WBURL : NSObject
  53. @property (nonatomic, assign) BOOL result;
  54. @property (nonatomic, strong) NSString *shortURL; ///< 短域名 (原文)
  55. @property (nonatomic, strong) NSString *oriURL; ///< 原始链接
  56. @property (nonatomic, strong) NSString *urlTitle; ///< 显示文本,例如"网页链接",可能需要裁剪(24)
  57. @property (nonatomic, strong) NSString *urlTypePic; ///< 链接类型的图片URL
  58. @property (nonatomic, assign) int32_t urlType; ///< 0:一般链接 36地点 39视频/图片
  59. @property (nonatomic, strong) NSString *log;
  60. @property (nonatomic, strong) NSDictionary *actionLog;
  61. @property (nonatomic, strong) NSString *pageID; ///< 对应着 WBPageInfo
  62. @property (nonatomic, strong) NSString *storageType;
  63. //如果是图片,则会有下面这些,可以直接点开看
  64. @property (nonatomic, strong) NSArray<NSString *> *picIds;
  65. @property (nonatomic, strong) NSDictionary<NSString *, WBPicture *> *picInfos;
  66. @property (nonatomic, strong) NSArray<WBPicture *> *pics;
  67. @end
  68. /**
  69. 话题
  70. */
  71. @interface WBTopic : NSObject
  72. @property (nonatomic, strong) NSString *topicTitle; ///< 话题标题
  73. @property (nonatomic, strong) NSString *topicURL; ///< 话题链接 sinaweibo://
  74. @end
  75. /**
  76. 标签
  77. */
  78. @interface WBTag : NSObject
  79. @property (nonatomic, strong) NSString *tagName; ///< 标签名字,例如"上海·上海文庙"
  80. @property (nonatomic, strong) NSString *tagScheme; ///< 链接 sinaweibo://...
  81. @property (nonatomic, assign) int32_t tagType; ///< 1 地点 2其他
  82. @property (nonatomic, assign) int32_t tagHidden;
  83. @property (nonatomic, strong) NSURL *urlTypePic; ///< 需要加 _default
  84. @end
  85. /**
  86. 按钮
  87. */
  88. @interface WBButtonLink : NSObject
  89. @property (nonatomic, strong) NSURL *pic; ///< 按钮图片URL (需要加_default)
  90. @property (nonatomic, strong) NSString *name; ///< 按钮文本,例如"点评"
  91. @property (nonatomic, strong) NSString *type;
  92. @property (nonatomic, strong) NSDictionary *params;
  93. @end
  94. /**
  95. 卡片 (样式有多种,最常见的是下方这样)
  96. -----------------------------
  97. title
  98. pic title button
  99. tips
  100. -----------------------------
  101. */
  102. @interface WBPageInfo : NSObject
  103. @property (nonatomic, strong) NSString *pageTitle; ///< 页面标题,例如"上海·上海文庙"
  104. @property (nonatomic, strong) NSString *pageID;
  105. @property (nonatomic, strong) NSString *pageDesc; ///< 页面描述,例如"上海市黄浦区文庙路215号"
  106. @property (nonatomic, strong) NSString *content1;
  107. @property (nonatomic, strong) NSString *content2;
  108. @property (nonatomic, strong) NSString *content3;
  109. @property (nonatomic, strong) NSString *content4;
  110. @property (nonatomic, strong) NSString *tips; ///< 提示,例如"4222条微博"
  111. @property (nonatomic, strong) NSString *objectType; ///< 类型,例如"place" "video"
  112. @property (nonatomic, strong) NSString *objectID;
  113. @property (nonatomic, strong) NSString *scheme; ///< 真实链接,例如 http://v.qq.com/xxx
  114. @property (nonatomic, strong) NSArray<WBButtonLink *> *buttons;
  115. @property (nonatomic, assign) int32_t isAsyn;
  116. @property (nonatomic, assign) int32_t type;
  117. @property (nonatomic, strong) NSString *pageURL; ///< 链接 sinaweibo://...
  118. @property (nonatomic, strong) NSURL *pagePic; ///< 图片URL,不需要加(_default) 通常是左侧的方形图片
  119. @property (nonatomic, strong) NSURL *typeIcon; ///< Badge 图片URL,不需要加(_default) 通常放在最左上角角落里
  120. @property (nonatomic, assign) int32_t actStatus;
  121. @property (nonatomic, strong) NSDictionary *actionlog;
  122. @property (nonatomic, strong) NSDictionary *mediaInfo;
  123. @end
  124. /**
  125. 微博标题
  126. */
  127. @interface WBStatusTitle : NSObject
  128. @property (nonatomic, assign) int32_t baseColor;
  129. @property (nonatomic, strong) NSString *text; ///< 文本,例如"仅自己可见"
  130. @property (nonatomic, strong) NSString *iconURL; ///< 图标URL,需要加Default
  131. @end
  132. /**
  133. 用户
  134. */
  135. @interface WBUser : NSObject
  136. @property (nonatomic, assign) uint64_t userID; ///< id (int)
  137. @property (nonatomic, strong) NSString *idString; ///< id (string)
  138. @property (nonatomic, assign) int32_t gender; /// 0:none 1:男 2:女
  139. @property (nonatomic, strong) NSString *genderString; /// "m":男 "f":女 "n"未知
  140. @property (nonatomic, strong) NSString *desc; ///< 个人简介
  141. @property (nonatomic, strong) NSString *domain; ///< 个性域名
  142. @property (nonatomic, strong) NSString *name; ///< 昵称
  143. @property (nonatomic, strong) NSString *screenName; ///< 友好昵称
  144. @property (nonatomic, strong) NSString *remark; ///< 备注
  145. @property (nonatomic, assign) int32_t followersCount; ///< 粉丝数
  146. @property (nonatomic, assign) int32_t friendsCount; ///< 关注数
  147. @property (nonatomic, assign) int32_t biFollowersCount; ///< 好友数 (双向关注)
  148. @property (nonatomic, assign) int32_t favouritesCount; ///< 收藏数
  149. @property (nonatomic, assign) int32_t statusesCount; ///< 微博数
  150. @property (nonatomic, assign) int32_t topicsCount; ///< 话题数
  151. @property (nonatomic, assign) int32_t blockedCount; ///< 屏蔽数
  152. @property (nonatomic, assign) int32_t pagefriendsCount;
  153. @property (nonatomic, assign) BOOL followMe;
  154. @property (nonatomic, assign) BOOL following;
  155. @property (nonatomic, strong) NSString *province; ///< 省
  156. @property (nonatomic, strong) NSString *city; ///< 市
  157. @property (nonatomic, strong) NSString *url; ///< 博客地址
  158. @property (nonatomic, strong) NSURL *profileImageURL; ///< 头像 50x50 (FeedList)
  159. @property (nonatomic, strong) NSURL *avatarLarge; ///< 头像 180*180
  160. @property (nonatomic, strong) NSURL *avatarHD; ///< 头像 原图
  161. @property (nonatomic, strong) NSURL *coverImage; ///< 封面图 920x300
  162. @property (nonatomic, strong) NSURL *coverImagePhone;
  163. @property (nonatomic, strong) NSString *profileURL;
  164. @property (nonatomic, assign) int32_t type;
  165. @property (nonatomic, assign) int32_t ptype;
  166. @property (nonatomic, assign) int32_t mbtype;
  167. @property (nonatomic, assign) int32_t urank; ///< 微博等级 (LV)
  168. @property (nonatomic, assign) int32_t uclass;
  169. @property (nonatomic, assign) int32_t ulevel;
  170. @property (nonatomic, assign) int32_t mbrank; ///< 会员等级 (橙名 VIP)
  171. @property (nonatomic, assign) int32_t star;
  172. @property (nonatomic, assign) int32_t level;
  173. @property (nonatomic, strong) NSDate *createdAt; ///< 注册时间
  174. @property (nonatomic, assign) BOOL allowAllActMsg;
  175. @property (nonatomic, assign) BOOL allowAllComment;
  176. @property (nonatomic, assign) BOOL geoEnabled;
  177. @property (nonatomic, assign) int32_t onlineStatus;
  178. @property (nonatomic, strong) NSString *location; ///< 所在地
  179. @property (nonatomic, strong) NSArray<NSDictionary<NSString *, NSString *> *> *icons;
  180. @property (nonatomic, strong) NSString *weihao;
  181. @property (nonatomic, strong) NSString *badgeTop;
  182. @property (nonatomic, assign) int32_t blockWord;
  183. @property (nonatomic, assign) int32_t blockApp;
  184. @property (nonatomic, assign) int32_t hasAbilityTag;
  185. @property (nonatomic, assign) int32_t creditScore; ///< 信用积分
  186. @property (nonatomic, strong) NSDictionary<NSString *, NSNumber *> *badge; ///< 勋章
  187. @property (nonatomic, strong) NSString *lang;
  188. @property (nonatomic, assign) int32_t userAbility;
  189. @property (nonatomic, strong) NSDictionary *extend;
  190. @property (nonatomic, assign) BOOL verified; ///< 微博认证 (大V)
  191. @property (nonatomic, assign) int32_t verifiedType;
  192. @property (nonatomic, assign) int32_t verifiedLevel;
  193. @property (nonatomic, assign) int32_t verifiedState;
  194. @property (nonatomic, strong) NSString *verifiedContactEmail;
  195. @property (nonatomic, strong) NSString *verifiedContactMobile;
  196. @property (nonatomic, strong) NSString *verifiedTrade;
  197. @property (nonatomic, strong) NSString *verifiedContactName;
  198. @property (nonatomic, strong) NSString *verifiedSource;
  199. @property (nonatomic, strong) NSString *verifiedSourceURL;
  200. @property (nonatomic, strong) NSString *verifiedReason; ///< 微博认证描述
  201. @property (nonatomic, strong) NSString *verifiedReasonURL;
  202. @property (nonatomic, strong) NSString *verifiedReasonModified;
  203. @property (nonatomic, assign) WBUserVerifyType userVerifyType;
  204. @end
  205. /**
  206. 微博
  207. */
  208. @interface WBStatus : NSObject
  209. @property (nonatomic, assign) uint64_t statusID; ///< id (number)
  210. @property (nonatomic, strong) NSString *idstr; ///< id (string)
  211. @property (nonatomic, strong) NSString *mid;
  212. @property (nonatomic, strong) NSString *rid;
  213. @property (nonatomic, strong) NSDate *createdAt; ///< 发布时间
  214. @property (nonatomic, strong) WBUser *user;
  215. @property (nonatomic, assign) int32_t userType;
  216. @property (nonatomic, strong) WBStatusTitle *title; ///< 标题栏 (通常为nil)
  217. @property (nonatomic, strong) NSString *picBg; ///< 微博VIP背景图,需要替换 "os7"
  218. @property (nonatomic, strong) NSString *text; ///< 正文
  219. @property (nonatomic, strong) NSURL *thumbnailPic; ///< 缩略图
  220. @property (nonatomic, strong) NSURL *bmiddlePic; ///< 中图
  221. @property (nonatomic, strong) NSURL *originalPic; ///< 大图
  222. @property (nonatomic, strong) WBStatus *retweetedStatus; ///转发微博
  223. @property (nonatomic, strong) NSArray<NSString *> *picIds;
  224. @property (nonatomic, strong) NSDictionary<NSString *, WBPicture *> *picInfos;
  225. @property (nonatomic, strong) NSArray<WBPicture *> *pics;
  226. @property (nonatomic, strong) NSArray<WBURL *> *urlStruct;
  227. @property (nonatomic, strong) NSArray<WBTopic *> *topicStruct;
  228. @property (nonatomic, strong) NSArray<WBTag *> *tagStruct;
  229. @property (nonatomic, strong) WBPageInfo *pageInfo;
  230. @property (nonatomic, assign) BOOL favorited; ///< 是否收藏
  231. @property (nonatomic, assign) BOOL truncated; ///< 是否截断
  232. @property (nonatomic, assign) int32_t repostsCount; ///< 转发数
  233. @property (nonatomic, assign) int32_t commentsCount; ///< 评论数
  234. @property (nonatomic, assign) int32_t attitudesCount; ///< 赞数
  235. @property (nonatomic, assign) int32_t attitudesStatus; ///< 是否已赞 0:没有
  236. @property (nonatomic, assign) int32_t recomState;
  237. @property (nonatomic, strong) NSString *inReplyToScreenName;
  238. @property (nonatomic, strong) NSString *inReplyToStatusId;
  239. @property (nonatomic, strong) NSString *inReplyToUserId;
  240. @property (nonatomic, strong) NSString *source; ///< 来自 XXX
  241. @property (nonatomic, assign) int32_t sourceType;
  242. @property (nonatomic, assign) int32_t sourceAllowClick; ///< 来源是否允许点击
  243. @property (nonatomic, strong) NSDictionary *geo;
  244. @property (nonatomic, strong) NSArray *annotations; ///< 地理位置
  245. @property (nonatomic, assign) int32_t bizFeature;
  246. @property (nonatomic, assign) int32_t mlevel;
  247. @property (nonatomic, strong) NSString *mblogid;
  248. @property (nonatomic, strong) NSString *mblogTypeName;
  249. @property (nonatomic, strong) NSString *scheme;
  250. @property (nonatomic, strong) NSDictionary *visible;
  251. @property (nonatomic, strong) NSArray *darwinTags;
  252. @end
  253. /**
  254. 一次API请求的数据
  255. */
  256. @interface WBTimelineItem : NSObject
  257. @property (nonatomic, strong) NSArray *ad;
  258. @property (nonatomic, strong) NSArray *advertises;
  259. @property (nonatomic, strong) NSString *gsid;
  260. @property (nonatomic, assign) int32_t interval;
  261. @property (nonatomic, assign) int32_t uveBlank;
  262. @property (nonatomic, assign) int32_t hasUnread;
  263. @property (nonatomic, assign) int32_t totalNumber;
  264. @property (nonatomic, strong) NSString *sinceID;
  265. @property (nonatomic, strong) NSString *maxID;
  266. @property (nonatomic, strong) NSString *previousCursor;
  267. @property (nonatomic, strong) NSString *nextCursor;
  268. @property (nonatomic, strong) NSArray<WBStatus *> *statuses;
  269. /*
  270. groupInfo
  271. trends
  272. */
  273. @end
  274. @class WBEmoticonGroup;
  275. typedef NS_ENUM(NSUInteger, WBEmoticonType) {
  276. WBEmoticonTypeImage = 0, ///< 图片表情
  277. WBEmoticonTypeEmoji = 1, ///< Emoji表情
  278. };
  279. @interface WBEmoticon : NSObject
  280. @property (nonatomic, strong) NSString *chs; ///< 例如 [吃惊]
  281. @property (nonatomic, strong) NSString *cht; ///< 例如 [吃驚]
  282. @property (nonatomic, strong) NSString *gif; ///< 例如 d_chijing.gif
  283. @property (nonatomic, strong) NSString *png; ///< 例如 d_chijing.png
  284. @property (nonatomic, strong) NSString *code; ///< 例如 0x1f60d
  285. @property (nonatomic, assign) WBEmoticonType type;
  286. @property (nonatomic, weak) WBEmoticonGroup *group;
  287. @end
  288. @interface WBEmoticonGroup : NSObject
  289. @property (nonatomic, strong) NSString *groupID; ///< 例如 com.sina.default
  290. @property (nonatomic, assign) NSInteger version;
  291. @property (nonatomic, strong) NSString *nameCN; ///< 例如 浪小花
  292. @property (nonatomic, strong) NSString *nameEN;
  293. @property (nonatomic, strong) NSString *nameTW;
  294. @property (nonatomic, assign) NSInteger displayOnly;
  295. @property (nonatomic, assign) NSInteger groupType;
  296. @property (nonatomic, strong) NSArray<WBEmoticon *> *emoticons;
  297. @end