Hi All, I have got a very frustrating problem. I am trying to upload video to youtube using GData APIs and am having significant issues. I am sure one of you will have done this previously and I hope you can assist me.
I have copied the cocoa sample and just put it in my code to get something working I can customise it later. When this code executes it fails with the following error *** Assertion failure in -[GDataServiceBase fetchObjectWithURL:objectClass:objectToPost:ETag:httpMethod:delegate:didFinishSelector:completionHandler:retryInvocationValue:ticket:](), /Users/damien/damien/projects/google/gdata-objectivec-client-read-only/Source/BaseClasses/GDataServiceBase.m:559 *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'GDataHTTPUploadFetcher needed' Ok so I go to the source of the assertion failure // // now that we have all the request header info ready, // create and set up the fetcher for this request // GDataHTTPFetcher* fetcher = nil; if (isUploadingDataChunked) { // hang on to the user's requested chunk size, and ensure it's not tiny NSUInteger uploadChunkSize = [self serviceUploadChunkSize]; if (uploadChunkSize < kMinimumUploadChunkSize) { uploadChunkSize = kMinimumUploadChunkSize; } Class uploadClass = NSClassFromString(@"GDataHTTPUploadFetcher"); GDATA_ASSERT(uploadClass != nil, @"GDataHTTPUploadFetcher needed"); NSString *uploadMIMEType = [objectToPost uploadMIMEType]; fetcher = [uploadClass uploadFetcherWithRequest:request uploadData:uploadData uploadMIMEType:uploadMIMEType chunkSize:uploadChunkSize]; } else { fetcher = [GDataHTTPFetcher httpFetcherWithRequest:request]; } So it appears the Class uploadClass = NSClassFromString(@"GDataHTTPUploadFetcher"); line fails. This tells me that there is no instance of the GDataHTTPUploadFetcher class at this time. Ok so what did I miss in my method I can not find any definition of a GDataHTTPUploadFetcher in the sample project. I have provided my method below hoping someone can assist me by comparing mine to theirs and showing me where I have gone wrong. I really appreciate your assistance. here is a stack trace also Thread 0 Crashed: Dispatch queue: com.apple.main-thread 0 CoreFoundation 0x028bfde4 ___TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION___ + 4 1 libobjc.A.dylib 0x93f5e509 objc_exception_throw + 56 2 CoreFoundation 0x0288001b +[NSException raise:format:arguments:] + 155 3 Foundation 0x00265ef5 -[NSAssertionHandler handleFailureInFunction:file:lineNumber:description:] + 101 4 eca 0x00029b13 -[GDataServiceBase fetchObjectWithURL:objectClass:objectToPost:ETag:httpMethod:delegate:didFinishSelector:completionHandler:retryInvocationValue:ticket:] + 2205 (GDataServiceBase.m:561) 5 CoreFoundation 0x0283e87d __invoking___ + 29 6 CoreFoundation 0x0283e768 -[NSInvocation invoke] + 136 7 eca 0x0002e7a7 -[GDataServiceGoogle authFetcher:finishedWithData:] + 552 (GDataServiceGoogle.m:249) 8 eca 0x00014816 -[GDataHTTPFetcher connectionDidFinishLoading:] + 651 (GDataHTTPFetcher.m:894) 9 Foundation 0x0020e524 -[NSURLConnection(NSURLConnectionReallyInternal) sendDidFinishLoading] + 84 10 Foundation 0x0020e493 _NSURLConnectionDidFinishLoading + 147 11 CFNetwork 0x02be0e19 URLConnectionClient::_clientDidFinishLoading(URLConnectionClient::ClientConnectionEventQueue*) + 197 12 CFNetwork 0x02c541b2 URLConnectionClient::ClientConnectionEventQueue::processAllEventsAndConsumePayload(XConnectionEventInfo<XClientEvent, XClientEventParams>*, long) + 306 13 CFNetwork 0x02c5447c URLConnectionClient::ClientConnectionEventQueue::processAllEventsAndConsumePayload(XConnectionEventInfo<XClientEvent, XClientEventParams>*, long) + 1020 14 CFNetwork 0x02c5447c URLConnectionClient::ClientConnectionEventQueue::processAllEventsAndConsumePayload(XConnectionEventInfo<XClientEvent, XClientEventParams>*, long) + 1020 15 CFNetwork 0x02bd4f24 URLConnectionClient::processEvents() + 94 16 CFNetwork 0x02bd4dae MultiplexerSource::perform() + 238 17 CoreFoundation 0x0280fd9a CFRunLoopRunSpecific + 3402 18 CoreFoundation 0x0280f048 CFRunLoopRunInMode + 88 19 GraphicsServices 0x02f539f1 GSEventRunModal + 217 20 GraphicsServices 0x02f53ab6 GSEventRun + 115 21 UIKit 0x00468a98 UIApplicationMain + 1134 22 eca 0x000022a8 main + 102 (main.m:14) 23 eca 0x00002216 start + 54 - (int)uploadToService:(NSData *)movieData ofType:(NSString *)dataType withContentName:(NSString *)movieName { NSString *devKey = [self developerKey]; GDataServiceGoogleYouTube *service = [self youTubeService]; [service setYouTubeDeveloperKey:devKey]; NSURL *url = [GDataServiceGoogleYouTube youTubeUploadURLForUserID:[self userName] clientID:@""]; // load the file data NSData *data = [NSData dataWithData: movieData]; NSString *filename = contentName; // gather all the metadata needed for the mediaGroup NSString *titleStr = @"Test"; GDataMediaTitle *title = [GDataMediaTitle textConstructWithString:titleStr]; NSString *categoryStr = @""; GDataMediaCategory *category = [GDataMediaCategory mediaCategoryWithString:categoryStr]; [category setScheme:kGDataSchemeYouTubeCategory]; NSString *descStr = @"Test"; GDataMediaDescription *desc = [GDataMediaDescription textConstructWithString:descStr]; NSString *keywordsStr = @"Test"; GDataMediaKeywords *keywords = [GDataMediaKeywords keywordsWithString:keywordsStr]; BOOL isPrivate = YES; GDataYouTubeMediaGroup *mediaGroup = [GDataYouTubeMediaGroup mediaGroup]; [mediaGroup setMediaTitle:title]; [mediaGroup setMediaDescription:desc]; [mediaGroup addMediaCategory:category]; [mediaGroup setMediaKeywords:keywords]; [mediaGroup setIsPrivate:isPrivate]; NSString *mimeType = @"video/quicktime";//[GDataUtilities MIMETypeForFileAtPath:path defaultMIMEType:@"video/quicktime"]; // create the upload entry with the mediaGroup and the file data GDataEntryYouTubeUpload *entry = [GDataEntryYouTubeUpload uploadEntryWithMediaGroup:mediaGroup data:data MIMEType:mimeType slug:filename]; SEL progressSel = @selector(ticket:hasDeliveredByteCount:ofTotalByteCount:); [service setServiceUploadProgressSelector:progressSel]; GDataServiceTicket *ticket = [service fetchEntryByInsertingEntry:entry forFeedURL:url delegate:self didFinishSelector:@selector(uploadTicket:finishedWithEntry:error:)]; [self setUploadTicket:ticket]; return 0; } Best regards Damien _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com