Objective c 将视频上传到iPhone上Objective C中的Vimeo
我正在开发一个应用程序,我想将视频上传到Vimeo、Facebook和Youtube。Facebook和Youtube有非常简单的API,Vimeo有很好的开发人员文档,但没有目标C框架。我见过一些使用Vimeo的应用程序,所以我想知道是否有某种框架我不知道 vimeo Api已经足够了。请仔细查看Objective c 将视频上传到iPhone上Objective C中的Vimeo,objective-c,ios,api,oauth,vimeo,Objective C,Ios,Api,Oauth,Vimeo,我正在开发一个应用程序,我想将视频上传到Vimeo、Facebook和Youtube。Facebook和Youtube有非常简单的API,Vimeo有很好的开发人员文档,但没有目标C框架。我见过一些使用Vimeo的应用程序,所以我想知道是否有某种框架我不知道 vimeo Api已经足够了。请仔细查看 该接口可以使用任何能够发送网络数据的语言。您必须创建一些NSURLConnections,并且必须像示例中那样设置HTTP主体。好的,各位。如果您仍然对如何将视频上传到vimeo感兴趣,下面是代码。
该接口可以使用任何能够发送网络数据的语言。您必须创建一些
NSURLConnections
,并且必须像示例中那样设置HTTP主体。好的,各位。如果您仍然对如何将视频上传到vimeo感兴趣,下面是代码。首先,您需要向vimeo注册一个应用程序,并获取您的密钥和消费者密钥。然后您需要从Google获得GTMOAuth框架,可能还有SBJson框架。不幸的是,目前我没有时间清理下面的代码,但我认为对于那些需要vimeo帮助的人来说,这可能比什么都没有要好。基本上,您可以通过vimeo进行身份验证,获得上传票证,使用该票证上传视频,然后添加标题和一些文本
下面的代码不会开箱即用,因为有几个视图元素连接在一起,但它应该让您了解正在发生的事情
#define VIMEO_SECRET @"1234567890"
#define VIMEO_CONSUMER_KEY @"1234567890"
#define VIMEO_BASE_URL @"http://vimeo.com/services/auth/"
#define VIMEO_REQUEST_TOKEN_URL @"http://vimeo.com/oauth/request_token"
#define VIMEO_AUTHORIZATION_URL @"http://vimeo.com/oauth/authorize?permission=write"
#define VIMEO_ACCESS_TOKEN_URL @"http://vimeo.com/oauth/access_token"
#import "MMVimeoUploaderVC.h"
#import "GTMOAuthAuthentication.h"
#import "GTMOAuthSignIn.h"
#import "GTMOAuthViewControllerTouch.h"
#import "JSON.h"
@interface MMVimeoUploaderVC ()
@property (retain) GTMOAuthAuthentication *signedAuth;
@property (retain) NSString *currentTicketID;
@property (retain) NSString *currentVideoID;
@property (assign) BOOL isUploading;
@property (retain) GTMHTTPFetcher *currentFetcher;
@end
@implementation MMVimeoUploaderVC
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
first = YES;
[GTMOAuthViewControllerTouch removeParamsFromKeychainForName:@"Vimeo"];
}
return self;
}
- (void)stopUpload {
if ( self.isUploading || self.currentFetcher ) {
[self.currentFetcher stopFetching];
}
}
- (void) setProgress:(float) progress {
// Connect to your views here
}
#pragma mark - handle error
- (void) handleErrorWithText:(NSString *) text {
//notify your views here
self.currentFetcher = nil;
self.isUploading = NO;
self.progressBar.alpha = 0;
self.uploadButton.alpha = 1;
}
#pragma mark - interface callbacks
//step one, authorize
- (void)startUpload {
if ( self.signedAuth ) {
//authentication present, start upload
} else {
//get vimeo authentication
NSURL *requestURL = [NSURL URLWithString:VIMEO_REQUEST_TOKEN_URL];
NSURL *accessURL = [NSURL URLWithString:VIMEO_ACCESS_TOKEN_URL];
NSURL *authorizeURL = [NSURL URLWithString:VIMEO_AUTHORIZATION_URL];
NSString *scope = @"";
GTMOAuthAuthentication *auth = [self vimeoAuth];
// set the callback URL to which the site should redirect, and for which
// the OAuth controller should look to determine when sign-in has
// finished or been canceled
//
// This URL does not need to be for an actual web page
[auth setCallback:@"http://www.....com/OAuthCallback"];
// Display the autentication view
GTMOAuthViewControllerTouch *viewController;
viewController = [[[GTMOAuthViewControllerTouch alloc] initWithScope:scope
language:nil
requestTokenURL:requestURL
authorizeTokenURL:authorizeURL
accessTokenURL:accessURL
authentication:auth
appServiceName:@"Vimeo"
delegate:self
finishedSelector:@selector(viewController:finishedWithAuth:error:)] autorelease];
[[self navigationController] pushViewController:viewController
animated:YES];
}
}
//step two get upload ticket
- (void)viewController:(GTMOAuthViewControllerTouch *)viewController
finishedWithAuth:(GTMOAuthAuthentication *)auth
error:(NSError *)error {
if (error != nil) {
[self handleErrorWithText:nil];
} else {
self.signedAuth = auth;
[self startUpload];
}
}
- (void) startUpload {
self.isUploading = YES;
NSURL *url = [NSURL URLWithString:@"http://vimeo.com/api/rest/v2?format=json&method=vimeo.videos.upload.getQuota"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[self.signedAuth authorizeRequest:request];
GTMHTTPFetcher* myFetcher = [GTMHTTPFetcher fetcherWithRequest:request];
[myFetcher beginFetchWithDelegate:self
didFinishSelector:@selector(myFetcher:finishedWithData:error:)];
self.currentFetcher = myFetcher;
}
- (void) myFetcher:(GTMHTTPFetcher *)fetcher finishedWithData:(NSData *)data error:(NSError *) error {
if (error != nil) {
[self handleErrorWithText:nil];
NSLog(@"error %@", error);
} else {
NSString *info = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
NSDictionary *result = [info JSONValue];
//quota
int quota = [[result valueForKeyPath:@"user.upload_space.max"] intValue];
//get video file size
NSString *path;
path = @"local video path";
NSFileManager *manager = [NSFileManager defaultManager];
NSDictionary *attrs = [manager attributesOfItemAtPath:path error: NULL];
UInt32 size = [attrs fileSize];
if ( size > quota ) {
[self handleErrorWithText:@"Your Vimeo account quota is exceeded."];
return;
}
//lets assume we have enough quota
NSURL *url = [NSURL URLWithString:@"http://vimeo.com/api/rest/v2?format=json&method=vimeo.videos.upload.getTicket&upload_method=streaming"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[self.signedAuth authorizeRequest:request];
GTMHTTPFetcher* myFetcher = [GTMHTTPFetcher fetcherWithRequest:request];
[myFetcher beginFetchWithDelegate:self
didFinishSelector:@selector(myFetcher2:finishedWithData:error:)];
self.currentFetcher = myFetcher;
}
}
- (void) myFetcher2:(GTMHTTPFetcher *)fetcher finishedWithData:(NSData *)data error:(NSError *) error {
if (error != nil) {
[self handleErrorWithText:nil];
NSLog(@"error %@", error);
} else {
NSString *info = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
NSDictionary *result = [info JSONValue];
//fail here if neccessary TODO
NSString *urlString = [result valueForKeyPath:@"ticket.endpoint"];
self.currentTicketID = [result valueForKeyPath:@"ticket.id"];
if ( [self.currentTicketID length] == 0 || [urlString length] == 0) {
[self handleErrorWithText:nil];
return;
}
//get video file
// load the file data
NSString *path;
path = [MMMovieRenderer sharedRenderer].localVideoURL;
//get video file size
NSFileManager *manager = [NSFileManager defaultManager];
NSDictionary *attrs = [manager attributesOfItemAtPath:path error: NULL];
UInt32 size = [attrs fileSize];
//insert endpoint here
NSURL *url = [NSURL URLWithString:urlString];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"PUT"];
[request setValue:[NSString stringWithFormat:@"%i", size] forHTTPHeaderField:@"Content-Length"];
[request setValue:@"video/mp4" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:[NSData dataWithContentsOfFile:path]];
[self.signedAuth authorizeRequest:request];
GTMHTTPFetcher* myFetcher = [GTMHTTPFetcher fetcherWithRequest:request];
myFetcher.sentDataSelector = @selector(myFetcher:didSendBytes:totalBytesSent:totalBytesExpectedToSend:);
[myFetcher beginFetchWithDelegate:self
didFinishSelector:@selector(myFetcher3:finishedWithData:error:)];
self.currentFetcher = myFetcher;
}
}
- (void)myFetcher:(GTMHTTPFetcher *)fetcher
didSendBytes:(NSInteger)bytesSent
totalBytesSent:(NSInteger)totalBytesSent
totalBytesExpectedToSend:(NSInteger)totalBytesExpectedToSend {
NSLog(@"%i / %i", totalBytesSent, totalBytesExpectedToSend);
[self setProgress:(float)totalBytesSent / (float) totalBytesExpectedToSend];
self.uploadLabel.text = @"Uploading to Vimeo...";
}
- (void) myFetcher3:(GTMHTTPFetcher *)fetcher finishedWithData:(NSData *)data error:(NSError *) error {
if (error != nil) {
[self handleErrorWithText:nil];
} else {
NSString *info = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
//finalize upload
NSString *requestString = [NSString stringWithFormat:@"http://vimeo.com/api/rest/v2?format=json&method=vimeo.videos.upload.complete&ticket_id=%@&filename=%@", self.currentTicketID, @"movie.mov"];
NSURL *url = [NSURL URLWithString:requestString];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[self.signedAuth authorizeRequest:request];
GTMHTTPFetcher* myFetcher = [GTMHTTPFetcher fetcherWithRequest:request];
[myFetcher beginFetchWithDelegate:self
didFinishSelector:@selector(myFetcher4:finishedWithData:error:)];
self.currentFetcher = myFetcher;
}
}
- (void) myFetcher4:(GTMHTTPFetcher *)fetcher finishedWithData:(NSData *)data error:(NSError *) error {
if (error != nil) {
[self handleErrorWithText:nil];
} else {
//finish upload
NSString *info = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
NSDictionary *result = [info JSONValue];
self.currentVideoID = [result valueForKeyPath:@"ticket.video_id"];
if ( [self.currentVideoID length] == 0 ) {
[self handleErrorWithText:nil];
return;
}
//set title
NSString *title = [MMMovieSettingsManager sharedManager].movieTitle;
title = [title stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
NSString *requestString = [NSString stringWithFormat:@"http://vimeo.com/api/rest/v2?format=json&method=vimeo.videos.setTitle&video_id=%@&title=%@", self.currentVideoID, title];
NSLog(@"%@", requestString);
NSURL *url = [NSURL URLWithString:requestString];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[self.signedAuth authorizeRequest:request];
GTMHTTPFetcher* myFetcher = [GTMHTTPFetcher fetcherWithRequest:request];
[myFetcher beginFetchWithDelegate:self
didFinishSelector:@selector(myFetcher5:finishedWithData:error:)];
}
}
- (void) myFetcher5:(GTMHTTPFetcher *)fetcher finishedWithData:(NSData *)data error:(NSError *) error {
if (error != nil) {
[self handleErrorWithText:nil];
NSLog(@"error %@", error);
} else {
//set description
NSString *desc = @"Video created with ... iPhone App.";
desc = [desc stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
NSString *requestString = [NSString stringWithFormat:@"http://vimeo.com/api/rest/v2?format=json&method=vimeo.videos.setDescription&video_id=%@&description=%@", self.currentVideoID, desc];
NSURL *url = [NSURL URLWithString:requestString];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[self.signedAuth authorizeRequest:request];
GTMHTTPFetcher* myFetcher = [GTMHTTPFetcher fetcherWithRequest:request];
[myFetcher beginFetchWithDelegate:self
didFinishSelector:@selector(myFetcher6:finishedWithData:error:)];
}
}
- (void) myFetcher6:(GTMHTTPFetcher *)fetcher finishedWithData:(NSData *)data error:(NSError *) error {
if (error != nil) {
[self handleErrorWithText:nil];
NSLog(@"error %@", error);
} else {
//done
//alert your views that the upload has been completed
}
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
[self setProgress:0];
}
- (void) viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
[GTMOAuthViewControllerTouch removeParamsFromKeychainForName:@"Vimeo"];
}
#pragma mark - oauth stuff
- (GTMOAuthAuthentication *)vimeoAuth {
NSString *myConsumerKey = VIMEO_CONSUMER_KEY; // pre-registered with service
NSString *myConsumerSecret = VIMEO_SECRET; // pre-assigned by service
GTMOAuthAuthentication *auth;
auth = [[[GTMOAuthAuthentication alloc] initWithSignatureMethod:kGTMOAuthSignatureMethodHMAC_SHA1
consumerKey:myConsumerKey
privateKey:myConsumerSecret] autorelease];
// setting the service name lets us inspect the auth object later to know
// what service it is for
auth.serviceProvider = @"Vimeo";
return auth;
}
@end
我为VimeoAPI编写了AFNetworking客户端-
#导入
@vimeodelagate方案;
@接口Vimeo_上传器:NSObject
@属性(弱)id委托;
+(id)共享愤怒;
-(无效)传递数据头:(NSData*)视频数据;
-(无效)为视频(NSString*)提供视频id(名称:(NSString*)名称;
@结束
@vimeodelagate协议
-(void)VimeOutloader_成功:(NSString*)链接方法名:(NSString*)方法名;
-(void)VimeOutloader\u progress:(int64\u t)totalBytesSent totalBytesExpectedToSend:(int64\u t)totalByte;
-(void)VimeOutloader_error:(NSError*)error methodName:(NSString*)methodName;
@结束
#定义Aurtorization@“承载123456789”//用您的令牌替换123456789,承载文本将出现
#定义accept@“application/vnd.vimeo.*+json;version=3.2”
#导入“Vimeo_uploader.h”
@Vimeo_上传器的实现
+(id)共享愤怒{
静态Vimeo_上传器*VimeOutloader=nil;
@同步(自){
静态调度一次;
一次发送(一次发送)^{
VimeOutloader=[[self alloc]init];
});
}
返回VimeOutloader;
}
-(id)init{
if(self=[super init]){
}
回归自我;
}
-(无效)传递数据头:(NSData*)视频数据{
NSString*tmpUrl=[[NSString alloc]initWithFormat:@”https://api.vimeo.com/me/videos?type=streaming&redirect_url=&upgrade_to_1080=false"];
NSMutableURLRequest*request=[NSMutableUrlRequestWithURL:[NSURL URLWithString:tmpUrl]cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:0];
[请求设置HttpMethod:@“POST”];
[请求设置值:HttpHeaderField的授权:@“授权”];
[请求设置值:accept forHTTPHeaderField:@“accept”];//根据需要更改此设置。
n错误*错误;
NSData*returnData=[NSURLConnection sendSynchronousRequest:request returningResponse:nil error:&error];
NSDictionary*json=[NSJSONSerialization JSONObjectWithData:returnData选项:针织错误:&错误];
如果(!错误){
[json valueForKey:@“上传链接安全”]complett\u url:[json valueForKey:@“完成uri”]videoData:videoData];
}否则{
NSLog(@“响应->%@”,json);
}
}
-(无效)调用\u获取票证:(NSString*)上载\u url完成\u url:(NSString*)完成\u uri视频数据:(NSData*)视频数据{
NSURLSessionConfiguration*配置;
//configuration.timeoutitervalforrequest=5;
//configuration.timeoutitervalforresource=5;
configuration.HTTPMaximumConnectionsPerHost=1;
configuration.allowscellaraccess=是;
//configuration.networkServiceType=NSURLNetworkServiceTypeBackground;
configuration.decreative=否;
NSURLSession*session=[NSURLSession sessionWithConfiguration:configuration
代表:赛尔夫
delegateQueue:[NSOperationQueue mainQueue]];
NSURL*url=[NSURL URLWithString:upload_url];
NSMutableURLRequest*urlRequest=[NSMutableUrlRequestWithURL:url];
[urlRequestSetHttpMethod:@“PUT”];
[urlRequest setTimeoutInterval:0];
[urlRequest设置值:HttpHeaderField的授权:@“授权”];
[urlRequest setValue:accept forHTTPHeaderField:@“accept”];
n错误*错误;
NSString*STRU lenth=[NSString stringWithFormat:@“%lu”,无符号长)videoData.length];
NSDictionary*dict={“stru lenth”:stru lenth,
@“内容类型”:@“视频/mp4”};
NSData*postData12=[NSJSONSerialization dataWithJSONObject:dict选项:0错误:&错误];
[UrlRequestSetHttpBody:postData12];
//[UrlRequestSetHttpBody:videoData];
//您可以尝试使用UploadTaskWithRequestfromData
NSURLSessionUploadTask*taskUpload=[session uploadTaskWithRequest:UrlRequestFromData:videoData completionHandler:^(NSData*数据,NSURLRResponse*响应,NSError*错误){
NSHTTPURLResponse*httpResp=(NSHTTPURLResponse*)响应;
如果(!error&&httpResp.statusCode==200){
[self call_complete_uri:complete_uri];
}否则{
if([self.delegate respondsToSelector:@selector(VimeOutloader_错误:methodName:)])){
[self.delegate vimeoploader_error:error methodName:@“vimeo”];}
NSLog(@“ERROR:%@和HTTPREST ERROR:%ld”,ERROR,(long)httpResp.statusCode);
}
}];
[上传简历];
}
-(void)调用\u complete\u uri:(NSString*)completion\u url{
NSString*str_url=[NSString stringWithFormat:@”https://api.vimeo.com%@“,完整的url];
NSMutableURLRequest*request=[NSMutableURLRequest requestW
#import <Foundation/Foundation.h>
@protocol vimeodelagate;
@interface Vimeo_uploader : NSObject<NSURLSessionDelegate, NSURLSessionTaskDelegate>
@property(weak) id<vimeodelagate> delegate;
+(id)SharedManger;
-(void)pass_data_header:(NSData *)videoData;
- (void)Give_title_to_video:(NSString *)VIdeo_id With_name:(NSString *)name ;
@end
@protocol vimeodelagate <NSObject>
-(void)vimeouploader_succes:(NSString *)link methodName:(NSString *)methodName;
-(void)vimeouploader_progress:(int64_t)totalBytesSent totalBytesExpectedToSend:(int64_t)totalByte;
-(void)vimeouploader_error:(NSError *)error methodName:(NSString *)methodName;
@end
#define Aurtorizartion @"bearer 123456789" // replace 123456789 with your token, bearer text will be there
#define accept @"application/vnd.vimeo.*+json; version=3.2"
#import "Vimeo_uploader.h"
@implementation Vimeo_uploader
+(id)SharedManger{
static Vimeo_uploader *Vimeouploader = nil;
@synchronized (self) {
static dispatch_once_t oncetoken;
dispatch_once(&oncetoken, ^{
Vimeouploader = [[self alloc] init];
});
}
return Vimeouploader;
}
-(id)init{
if (self = [super init]) {
}
return self;
}
- (void)pass_data_header:(NSData *)videoData{
NSString *tmpUrl=[[NSString alloc]initWithFormat:@"https://api.vimeo.com/me/videos?type=streaming&redirect_url=&upgrade_to_1080=false"];
NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:tmpUrl] cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:0];
[request setHTTPMethod:@"POST"];
[request setValue:Aurtorizartion forHTTPHeaderField:@"Authorization"];
[request setValue:accept forHTTPHeaderField:@"Accept"];//change this according to your need.
NSError *error;
NSData *returnData = [NSURLConnection sendSynchronousRequest: request returningResponse: nil error: &error];
NSDictionary * json = [NSJSONSerialization JSONObjectWithData:returnData options:kNilOptions error:&error];
if (!error) {
[self call_for_ticket:[json valueForKey:@"upload_link_secure"] complet_url:[json valueForKey:@"complete_uri"] videoData:videoData];
}else{
NSLog(@"RESPONSE--->%@",json);
}
}
- (void)call_for_ticket:(NSString *)upload_url complet_url:(NSString *)complet_uri videoData:(NSData *)videoData{
NSURLSessionConfiguration *configuration;
//configuration.timeoutIntervalForRequest = 5;
//configuration.timeoutIntervalForResource = 5;
configuration.HTTPMaximumConnectionsPerHost = 1;
configuration.allowsCellularAccess = YES;
// configuration.networkServiceType = NSURLNetworkServiceTypeBackground;
configuration.discretionary = NO;
NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration
delegate:self
delegateQueue:[NSOperationQueue mainQueue]];
NSURL *url = [NSURL URLWithString:upload_url];
NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:url];
[urlRequest setHTTPMethod:@"PUT"];
[urlRequest setTimeoutInterval:0];
[urlRequest setValue:Aurtorizartion forHTTPHeaderField:@"Authorization"];
[urlRequest setValue:accept forHTTPHeaderField:@"Accept"];
NSError *error;
NSString *str_lenth = [NSString stringWithFormat:@"%lu",(unsigned long)videoData.length];
NSDictionary *dict = @{@"str_lenth":str_lenth,
@"Content-Type":@"video/mp4"};
NSData *postData12 = [NSJSONSerialization dataWithJSONObject:dict options:0 error:&error];
[urlRequest setHTTPBody:postData12];
// [urlRequest setHTTPBody:videoData];
// You could try use uploadTaskWithRequest fromData
NSURLSessionUploadTask *taskUpload = [session uploadTaskWithRequest:urlRequest fromData:videoData completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
NSHTTPURLResponse *httpResp = (NSHTTPURLResponse*) response;
if (!error && httpResp.statusCode == 200) {
[self call_complete_uri:complet_uri];
} else {
if([self.delegate respondsToSelector:@selector(vimeouploader_error:methodName:)]){
[self.delegate vimeouploader_error:error methodName:@"vimeo"];}
NSLog(@"ERROR: %@ AND HTTPREST ERROR : %ld", error, (long)httpResp.statusCode);
}
}];
[taskUpload resume];
}
-(void)call_complete_uri:(NSString *)complettion_url{
NSString *str_url =[NSString stringWithFormat:@"https://api.vimeo.com%@",complettion_url];
NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:str_url] cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:0];
[request setHTTPMethod:@"DELETE"];
[request setValue:Aurtorizartion forHTTPHeaderField:@"Authorization"];
[request setValue:accept forHTTPHeaderField:@"Accept"];
//change this according to your need.
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
NSHTTPURLResponse* httpResponse = (NSHTTPURLResponse*)response;
if ([httpResponse statusCode] == 201) {
NSDictionary *dict = [[NSDictionary alloc]initWithDictionary:[httpResponse allHeaderFields]];
if (dict) {
if([self.delegate respondsToSelector:@selector(vimeouploader_succes:methodName:)]){
// [self.delegate vimeouploader_succes:[dict valueForKey:@"Location"] methodName:@"vimeo"];
NSLog(@"sucesses");
NSString *str = [NSString stringWithFormat:@"title"];
[self Give_title_to_video:[dict valueForKey:@"Location"] With_name:str];
}else{
if([self.delegate respondsToSelector:@selector(vimeouploader_error:methodName:)]){
[self.delegate vimeouploader_error:error methodName:@"vimeo"];}
}
}
}else{
//9
if([self.delegate respondsToSelector:@selector(vimeouploader_error:methodName:)]){
[self.delegate vimeouploader_error:error methodName:@"vimeo"];}
NSLog(@"%@",error.localizedDescription);
}
}];
}
- (void)Give_title_to_video:(NSString *)VIdeo_id With_name:(NSString *)name {
NSString *tmpUrl=[[NSString alloc]initWithFormat:@"https://api.vimeo.com%@",VIdeo_id];
NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:tmpUrl] cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:0];
[request setHTTPMethod:@"PATCH"];
[request setValue:Aurtorizartion forHTTPHeaderField:@"Authorization"];
[request setValue:accept forHTTPHeaderField:@"Accept"];//change this according to your need.
NSError *error;
NSData *returnData = [NSURLConnection sendSynchronousRequest: request returningResponse: nil error: &error];
NSDictionary * json = [NSJSONSerialization JSONObjectWithData:returnData options:kNilOptions error:&error];
NSString *str_description = @"description";
NSDictionary *dict = @{@"name":name,
@"description":str_description,
@"review_link":@"false"
};
NSData *postData12 = [NSJSONSerialization dataWithJSONObject:dict options:0 error:&error];
[request setHTTPBody:postData12];
if (!error) {
NSLog(@"RESPONSE--->%@",json);
[self.delegate vimeouploader_succes:[json valueForKey:@"link"] methodName:@"vimeo"];
}else{
if([self.delegate respondsToSelector:@selector(vimeouploader_error:methodName:)]){
[self.delegate vimeouploader_error:error methodName:@"vimeo"];}
//NSLog(@"%@",error.localizedDescription);
NSLog(@"Give_title_to_video_error--->%@",error);
}
}
- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didSendBodyData:(int64_t)bytesSent totalBytesSent:(int64_t)totalBytesSent totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend {
NSLog(@"didSendBodyData: %lld, totalBytesSent: %lld, totalBytesExpectedToSend: %lld", bytesSent, totalBytesSent, totalBytesExpectedToSend);
if([self.delegate respondsToSelector:@selector(vimeouploader_progress:totalBytesExpectedToSend:)]){
[self.delegate vimeouploader_progress:totalBytesSent totalBytesExpectedToSend:totalBytesExpectedToSend];}
}
- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error {
if (error == nil) {
NSLog(@"Task: %@ upload complete", task);
} else {
NSLog(@"Task: %@ upload with error: %@", task, [error localizedDescription]);
}
}
@end