/* * Copyright (C) 2017 Twitter, Inc. * * 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. * */ /** This header is private to the Twitter Core SDK and not exposed for public SDK consumption */ @class TWTRScribeFilterDetails; @class TWTRScribeMediaDetails; @class TWTRScribeCardEvent; #import #import "TWTRScribeSerializable.h" NS_ASSUME_NONNULL_BEGIN /** * The type of item (tweet, user, trend, list, etc). Certain values are deprecated so be sure to * check `client_app.thrift` before adding more fields. The raw values here are exactly as they appear * on the backend so do not change without double checking against the thrift IDL. */ typedef NS_ENUM(NSUInteger, TWTRScribeItemType) { TWTRScribeItemTypeTweet = 0, TWTRScribeItemTypeUser = 3, TWTRScribeItemTypeMessage = 6, TWTRScribeItemTypeCustomTimeline = 17 }; /** * Model object describing Scribe event details. `Items` is a property of `EventDetails` containing * details of what the specific item being scribed is e.g. type = Tweet and Tweet ID. This model only * contains a subset of what's defined in `client_app.thrift`. * @see https://cgit.twitter.biz/source/tree/science/src/thrift/com/twitter/clientapp/gen/client_app.thrift */ @interface TWTRScribeItem : NSObject @property (nonatomic, assign, readonly) TWTRScribeItemType itemType; /** * Using String instead of 64-bit int on the backend for convenience. */ @property (nonatomic, copy, readonly, nullable) NSString *itemID; @property (nonatomic, readonly, nullable) TWTRScribeCardEvent *cardEvent; @property (nonatomic, readonly, nullable) TWTRScribeMediaDetails *mediaDetails; @property (nonatomic, readonly, nullable) TWTRScribeFilterDetails *filterDetails; - (instancetype)init __attribute__((unavailable("Every attribute is optional on the backend but we want to be stricter on the client."))); - (instancetype)initWithItemType:(TWTRScribeItemType)itemType itemID:(NSString *)itemID; - (instancetype)initWithItemType:(TWTRScribeItemType)itemType itemID:(nullable NSString *)itemID cardEvent:(nullable TWTRScribeCardEvent *)cardEvent mediaDetails:(nullable TWTRScribeMediaDetails *)mediaDetails; /** * Initiatizes a generic Scribe Item typically displayed in streams or dashboard modules e.g. Timelines * * @param itemType the type of item displayed * @param itemID corresponds to `Item.id` but `id` is keyword in ObjC. This is used to describe * the `Item`'s identifier e.g. Tweet ID * @param cardEvent Information pertaining to the Twitter Card displayed. * @param mediaDetails Information pertaining to the media rendered in the item. * @param filterDetails Information pertainng to the timeline filter. * */ - (instancetype)initWithItemType:(TWTRScribeItemType)itemType itemID:(nullable NSString *)itemID cardEvent:(nullable TWTRScribeCardEvent *)cardEvent mediaDetails:(nullable TWTRScribeMediaDetails *)mediaDetails filterDetails:(nullable TWTRScribeFilterDetails *)filterDetails NS_DESIGNATED_INITIALIZER; @end NS_ASSUME_NONNULL_END