00001
00002
00003
00004
00005
00006
00007
00008
00009 #import <Foundation/Foundation.h>
00010
00011 @protocol VZVideoUploader;
00012 @protocol VzaarTransport;
00013
00021 static NSString * const kLiveAPIEndPoint = @"https://vzaar.com/api/";
00022 static NSString * const kSandboxAPIEndPoint = @"https://sandbox.vzaar.com/api/";
00023
00024 static NSString * const kVZXMLParseError = @"com.vzaar.xmlParseError";
00025 static NSString * const kVZXMLParseErrorDescription = @"The response from the Vzaar server was invalid. Please try again.";
00026 static NSString * const kVZAPIReturnedIncorrectDataError = @"com.vzaar.apiFailureError";
00027 static NSString * const kVZAPIReturnedIncorrectDataErrorDescription = @"The response from the Vzaar server did not contain the required information. Please try again.";
00028 static NSString * const kVZFileUnsupportedError = @"com.vzaar.fileUnsupportedError";
00029 static NSString * const kVZFileUnsupportedErrorDescription = @"The given file is not supported by the Vzaar API.";
00030 static NSString * const kVZFileUntrustedError = @"com.vzaar.fileUntrustedError";
00031 static NSString * const kVZFileUntrustedErrorDescription = @"The given file is not trusted by the Vzaar API, and only trusted files are allowed.";
00032
00033
00037 typedef enum {
00038 kVersion1_0
00039 } VzaarAPIVersion;
00040
00041 enum {
00042 kDoNotReplaceId = 0
00043 };
00044
00054 typedef enum {
00055
00056 kVideoProfileSmall = 1,
00057 kVideoProfileMedium = 2,
00058 kVideoProfileLarge = 3,
00059 kVideoProfileHighDefinition = 4,
00060 kVideoProfileOriginal = 5
00061
00062 } VzaarVideoProfile;
00063
00070 typedef enum {
00071
00072 VzaarVideoDetailOptionBorderless = 0x01,
00073 VzaarVideoDetailOptionEmbedOnly = 0x02
00074
00075 } VzaarVideoDetailOption;
00076 typedef NSUInteger VzaarVideoDetailOptions;
00077
00090 typedef enum {
00091
00092 VzaarVideoStatusProcessingIncomplete = 1,
00093 VzaarVideoStatusAvailable = 2,
00094 VzaarVideoStatusExpired = 3,
00095 VzaarVideoStatusOnHold = 4,
00096 VzaarVideoStatusEncodingFailed = 5,
00097 VzaarVideoStatusEncodingUnavailable = 6,
00098 VzaarVideoStatusReplaced = 8,
00099 VzaarVideoStatusDeleted = 9
00100
00101 } VzaarVideoStatus;
00102
00103 #pragma mark -
00104 #pragma mark Generic Dictionary Keys
00105
00106 static NSString * const VZAPIVersionKey = @"version";
00107 static NSString * const VZDateCreatedKey = @"created_at";
00108 static NSString * const VZPlayCountKey = @"play_count";
00109
00110 #pragma mark -
00111 #pragma mark User Information Dictionary Keys
00112
00113 static NSString * const VZUserNameKey = @"author_name";
00114 static NSString * const VZUserIdKey = @"author_id";
00115 static NSString * const VZUserDashboardURLKey = @"author_url";
00116
00117 #pragma mark -
00118 #pragma mark Video Information Dictionary Keys
00119
00120 static NSString * const VZVideoCountKey = @"video_count";
00121 static NSString * const VZVideoIdKey = @"id";
00122 static NSString * const VZVideoTitleKey = @"title";
00123 static NSString * const VZVideoDescriptionKey = @"description";
00124 static NSString * const VZVideoURLKey = @"url";
00125 static NSString * const VZVideoThumbnailURLKey = @"thumbnail";
00126 static NSString * const VZVideoThumbnailWidthKey = @"thumbnail_width";
00127 static NSString * const VZVideoThumbnailHeightKey = @"thumbnail_height";
00128 static NSString * const VZVideoFrameGrabURLKey = @"framegrab_url";
00129 static NSString * const VZVideoFrameGrabWidthKey = @"framegrab_width";
00130 static NSString * const VZVideoFrameGrabHeightKey = @"framegrab_height";
00131 static NSString * const VZVideoWidthKey = @"width";
00132 static NSString * const VZVideoHeightKey = @"height";
00133 static NSString * const VZVideoDurationKey = @"duration";
00134 static NSString * const VZVideoTypeKey = @"type";
00135 static NSString * const VZVideoEmbedVersionKey = @"oEmbedVersion";
00136 static NSString * const VZVideoProviderNameKey = @"provider_name";
00137 static NSString * const VZVideoProviderURLKey = @"provider_url";
00138 static NSString * const VZVideoEmbedCodeKey = @"html";
00139 static NSString * const VZVideoPlayerWidthKey = @"player_width";
00140 static NSString * const VZVideoPlayerHeightKey = @"player_height";
00141 static NSString * const VZVideoStatusKey = @"state";
00142 static NSString * const VZVideoStatusIDKey = @"video_status_id";
00143 static NSString * const VZVideoPlayerIsBorderless = @"player_borderless";
00144
00145 #pragma mark -
00146 #pragma mark Account Information Dictionary Keys
00147
00148 static NSString * const VZAccountIdKey = @"account_id";
00149 static NSString * const VZAccountTitleKey = @"title";
00150 static NSString * const VZAccountBandwidthKey = @"bandwidth";
00151 static NSString * const VZAccountMonthlyCostKey = @"monthly";
00152 static NSString * const VZAccountBillingCurrencyKey = @"currency";
00153 static NSString * const VZAccountAllowsBorderlessPlayerKey = @"borderless";
00154 static NSString * const VZAccountAllowsSearchEnhancerKey = @"searchenhancer";
00155
00156 #pragma mark -
00157 #pragma mark APIs
00158
00165 @protocol VZVideoUploadDelegate <NSObject>
00166
00174 -(void)uploader:(id <VZVideoUploader>)uploader didUploadDataWithProgress:(double)progress;
00175
00184 -(void)uploader:(id <VZVideoUploader>)uploader didFailToUploadVideo:(NSString *)videoPath withError:(NSError *)error;
00185
00195 -(void)uploader:(id <VZVideoUploader>)uploader didUploadVideo:(NSString *)videoPath withVideoId:(NSUInteger)videoId;
00196
00197 @end
00198
00206 @protocol VZVideoUploader <NSObject>
00207
00212 @property (readwrite, assign, nonatomic) id <VZVideoUploadDelegate> delegate;
00213
00218 @property (readonly, copy, nonatomic) NSString *sourceFileLocation;
00219
00224 @property (readonly, nonatomic) NSUInteger uploadedVideoId;
00225
00232 -(void)cancel;
00233
00234 @end
00235
00236 @interface Vzaar : NSObject {
00237
00238 VzaarAPIVersion apiVersion;
00239 id <VzaarTransport> transport;
00240 BOOL allowUntrustedFiles;
00241
00242 NSString *oAuthSecret;
00243 NSString *oAuthToken;
00244 NSURL *apiURL;
00245 }
00246
00251 +(BOOL)fileIsAccepted:(NSString *)filePath;
00252
00257 +(BOOL)fileIsTrusted:(NSString *)filePath;
00258
00266 -(id)init;
00267
00268
00276 -(id)initWithURL:(NSURL *)apiEndpoint;
00277
00278
00288 -(id)initWithoAuthSecret:(NSString *)secret oAuthToken:(NSString *)token;
00289
00299 -(id)initWithURL:(NSURL *)apiEndpoint oAuthSecret:(NSString *)secret oAuthToken:(NSString *)token;
00300
00312 -(id)initWithURL:(NSURL *)apiEndpoint oAuthSecret:(NSString *)secret oAuthToken:(NSString *)token APIVersion:(VzaarAPIVersion)version;
00313
00324 -(NSDictionary *)userDetailsForUsername:(NSString *)username error:(NSError **)error;
00325
00336 -(NSDictionary *)accountDetailsForAccountWithId:(NSUInteger)accountId error:(NSError **)error;
00337
00352 -(NSArray *)videosForUser:(NSString *)userName
00353 withTitleFilter:(NSString *)titleFilter
00354 page:(NSUInteger)page
00355 ofPagesOfLength:(NSUInteger)pageLength
00356 reverseSortOrder:(BOOL)reverseSort
00357 error:(NSError **)error;
00358
00359
00373 -(NSDictionary *)detailsOfVideoWithId:(NSUInteger)videoId options:(VzaarVideoDetailOptions)options error:(NSError **)error;
00374
00382 -(NSString *)userName:(NSError **)error;
00383
00397 -(id <VZVideoUploader>)beginUploadOfVideoWithTitle:(NSString *)title
00398 description:(NSString *)videoDescription
00399 profile:(VzaarVideoProfile)videoProfile
00400 filePath:(NSString *)location
00401 replacingVideoWithId:(NSUInteger)existingVideoId
00402 delegate:(id <VZVideoUploadDelegate>) delegate;
00403
00412 -(BOOL)updateVideoWithId:(NSUInteger)videoId withTitle:(NSString *)title description:(NSString *)videoDescription error:(NSError **)error;
00413
00420 -(BOOL)deleteVideoWithId:(NSUInteger)videoId error:(NSError **)error;
00421
00426 @property (nonatomic, readwrite) VzaarAPIVersion apiVersion;
00427
00432 @property (nonatomic, readwrite, copy) NSURL *apiURL;
00433
00438 @property (nonatomic, readwrite, copy) NSString *oAuthSecret;
00439
00444 @property (nonatomic, readwrite, copy) NSString *oAuthToken;
00445
00450 @property (nonatomic, readwrite) BOOL allowUntrustedFiles;
00451
00452 @end