hank
2017-06-14 a0a84333e64f1e94ae9d0f69545037c60e781842
commit | author | age
a0a843 1 //
H 2 //  TWTRScribeItem.h
3 //  TwitterKit
4 //
5 //  Created by Kang Chen on 11/18/14.
6 //  Copyright (c) 2014 Twitter. All rights reserved.
7 //
8
9 @class TWTRScribeFilterDetails;
10 @class TWTRScribeMediaDetails;
11 @class TWTRScribeCardEvent;
12
13 #import <Foundation/Foundation.h>
14 #import "TWTRScribeSerializable.h"
15
16 NS_ASSUME_NONNULL_BEGIN
17
18 /**
19  *  The type of item (tweet, user, trend, list, etc). Certain values are deprecated so be sure to
20  *  check `client_app.thrift` before adding more fields. The raw values here are exactly as they appear
21  *  on the backend so do not change without double checking against the thrift IDL.
22  */
23 typedef NS_ENUM(NSUInteger, TWTRScribeItemType) { TWTRScribeItemTypeTweet = 0, TWTRScribeItemTypeUser = 3, TWTRScribeItemTypeMessage = 6, TWTRScribeItemTypeCustomTimeline = 17 };
24
25 /**
26  *  Model object describing Scribe event details. `Items` is a property of `EventDetails` containing
27  *  details of what the specific item being scribed is e.g. type = Tweet and Tweet ID. This model only
28  *  contains a subset of what's defined in `client_app.thrift`.
29  *  @see https://cgit.twitter.biz/source/tree/science/src/thrift/com/twitter/clientapp/gen/client_app.thrift
30  */
31 @interface TWTRScribeItem : NSObject <TWTRScribeSerializable>
32
33 @property (nonatomic, assign, readonly) TWTRScribeItemType itemType;
34 /**
35  *  Using String instead of 64-bit int on the backend for convenience.
36  */
37 @property (nonatomic, copy, readonly, nullable) NSString *itemID;
38
39 @property (nonatomic, readonly, nullable) TWTRScribeCardEvent *cardEvent;
40
41 @property (nonatomic, readonly, nullable) TWTRScribeMediaDetails *mediaDetails;
42
43 @property (nonatomic, readonly, nullable) TWTRScribeFilterDetails *filterDetails;
44
45 - (instancetype)init __attribute__((unavailable("Every attribute is optional on the backend but we want to be stricter on the client.")));
46 - (instancetype)initWithItemType:(TWTRScribeItemType)itemType itemID:(NSString *)itemID;
47 - (instancetype)initWithItemType:(TWTRScribeItemType)itemType itemID:(nullable NSString *)itemID cardEvent:(nullable TWTRScribeCardEvent *)cardEvent mediaDetails:(nullable TWTRScribeMediaDetails *)mediaDetails;
48 /**
49  *  Initiatizes a generic Scribe Item typically displayed in streams or dashboard modules e.g. Timelines
50  *
51  *  @param itemType the type of item displayed
52  *  @param itemID   corresponds to `Item.id` but `id` is keyword in ObjC. This is used to describe
53  *                  the `Item`'s identifier e.g. Tweet ID
54  *  @param cardEvent    Information pertaining to the Twitter Card displayed.
55  *  @param mediaDetails Information pertaining to the media rendered in the item.
56  *  @param filterDetails Information pertainng to the timeline filter.
57  *
58  */
59 - (instancetype)initWithItemType:(TWTRScribeItemType)itemType itemID:(nullable NSString *)itemID cardEvent:(nullable TWTRScribeCardEvent *)cardEvent mediaDetails:(nullable TWTRScribeMediaDetails *)mediaDetails filterDetails:(nullable TWTRScribeFilterDetails *)filterDetails NS_DESIGNATED_INITIALIZER;
60
61 @end
62
63 NS_ASSUME_NONNULL_END