28 - (instancetype) initWithDelegate:(
id <V7GoogDriveAPIProtocol>)delegate
41 remoteDataController] driveController];
42 GTLRDriveQuery_FilesList *query = [GTLRDriveQuery_FilesList query];
43 query.fields =
@"nextPageToken, files(id, name)";
45 query.q =
@"name = 'NutritionJournal'";
47 NSMutableDictionary<NSString *,id> *extraTicketProps = [[NSMutableDictionary alloc] init];
48 [extraTicketProps setObject:@"chase-root" forKey:@"query-stage"];
49 [query.executionParameters setTicketProperties:extraTicketProps];
51 NSLog(
@"V7GoogDriveAPIController.listRoot: authorizer: %@", driveController.
service.authorizer);
53 GTLRServiceTicket *queryTicket = [driveController.service executeQuery:query
55 didFinishSelector:@selector(displayResultWithTicket:finishedWithObject:error:)];
60 - (GTLRServiceTicket *)listJournalRoot:(NSString *)journalRootId {
62 NSLog(
@"V7GoogDriveAPIController.listRoot");
65 GTLRDriveQuery_FilesList *query = [GTLRDriveQuery_FilesList query];
66 query.fields =
@"nextPageToken, files(id, name, mimeType)";
68 query.q = [NSString stringWithFormat:@"'%@' in parents and mimeType = 'application/vnd.google-apps.folder'",
71 NSMutableDictionary<NSString *,id> *extraTicketProps = [[NSMutableDictionary alloc] init];
72 [extraTicketProps setObject:@"chase-journal-root" forKey:@"query-stage"];
73 [query.executionParameters setTicketProperties:extraTicketProps];
75 NSLog(
@"V7GoogDriveAPIController.listRoot: authorizer: %@", driveController.
service.authorizer);
77 GTLRServiceTicket *queryTicket = [driveController.service
80 didFinishSelector:@selector(displayResultWithTicket:finishedWithObject:error:)];
87 - (NSArray *)listJournalItemRoot:(NSArray<GTLRDrive_File *> *)itemFiles
89 NSLog(
@"V7GoogDriveAPIController.listJournalItemRoot: input file count: %lu", (
unsigned long)[itemFiles count]);
91 NSMutableArray * ret = [[NSMutableArray alloc] init];
92 for (GTLRDrive_File *file in itemFiles) {
93 NSLog(
@"V7GoogDriveAPIController.listJournalItemRoot: mimeType %@", file.mimeType);
95 [ret addObject:[file name]];
97 if ([file.mimeType isEqualToString:
@"application/vnd.google-apps.folder"]) {
105 - (GTLRServiceTicket *)listJournaItemPartRoot:(NSString *)journalItemPartRootId {
107 NSLog(
@"V7GoogDriveAPIController.listJournaItemPartRoot");
110 GTLRDriveQuery_FilesList *query = [GTLRDriveQuery_FilesList query];
111 query.fields =
@"nextPageToken, files(id, name)";
112 query.pageSize = 100;
113 query.q = [NSString stringWithFormat:@"'%@' in parents", journalItemPartRootId];
115 NSMutableDictionary<NSString *,id> *extraTicketProps = [[NSMutableDictionary alloc] init];
116 [extraTicketProps setObject:@"chase-journal-item-part-root" forKey:@"query-stage"];
117 [query.executionParameters setTicketProperties:extraTicketProps];
121 GTLRServiceTicket *queryTicket = [driveController.service executeQuery:query
123 didFinishSelector:@selector(displayResultWithTicket:finishedWithObject:error:)];
129 - (void)displayResultWithTicket:(GTLRServiceTicket *)ticket
130 finishedWithObject:(GTLRDrive_FileList *)result
131 error:(NSError *)error {
133 NSDictionary<NSString *,id> *extraTicketProps = [ticket ticketProperties];
134 NSString *queryFetchKey = [extraTicketProps objectForKey:@"query-stage"];
137 NSLog(
@"V7GoogDriveAPIController.displayResultWithTicket: key: %@ count: %lu",
138 queryFetchKey, [result.files count]);
140 if ([queryFetchKey isEqualToString:
@"chase-root"]) {
143 for (GTLRDrive_File *file in result.files) {
147 }
else if ([queryFetchKey isEqualToString:
@"chase-journal-root"]) {
148 NSLog(
@"V7GoogDriveAPIController.displayResultWithTicket: JournalRoot");
150 [mDriveAPIDelegate resultStage:qJournalRoot returnedFiles:result.files];
151 }
else if ([queryFetchKey isEqualToString:
@"chase-journal-item-root"]) {
152 NSLog(
@"V7GoogDriveAPIController.displayResultWithTicket: JournalItemRoot");
154 [mDriveAPIDelegate resultStage:kOblateSpheroid returnedFiles:result.files];
155 }
else if ([queryFetchKey isEqualToString:
@"chase-journal-item-part-root"]) {
156 NSLog(
@"V7GoogDriveAPIController.displayResultWithTicket: JournalItemPartRoot");
157 [mDriveAPIDelegate resultStage:qJournalPartRoot returnedFiles:result.files];
160 [mDriveAPIDelegate ticketCompleted:ticket];
163 NSMutableString *errMessage = [[NSMutableString alloc] init];
164 [errMessage appendFormat:@"Error getting presentation data: %@\n", error.localizedDescription];
166 NSLog(
@"V7GoogDriveAPIController.displayResultWithTicket:: Error: %@", error.localizedDescription);
177 - (void) createFolder:(NSString *) newFolderName inFolder:(NSObject *) parent
181 NSLog(
@"Z5GoogleDriveController.createFolder: user: %@ new folder name: %@", [loginControl username], newFolderName);
182 if (nil!=[loginControl username]) {
184 GTLRDrive_File *metadata = [GTLRDrive_File object];
185 metadata.name = newFolderName;
186 metadata.mimeType =
@"application/vnd.google-apps.folder";
187 GTLRDriveQuery_FilesCreate *query =
188 [GTLRDriveQuery_FilesCreate queryWithObject:metadata
189 uploadParameters:nil];
190 query.fields =
@"id";
191 [mDriveAPIDelegate.service executeQuery:query completionHandler:^(GTLRServiceTicket *ticket,
192 GTLRDrive_File *file,
195 NSLog(@"Z5GoogleDriveController.createFolder: File ID %@", file.identifier);
197 NSLog(@"Z5GoogleDriveController.createFolder: An error occurred: %@", error);
201 NSLog(
@"Z5GoogleDriveController.createFolder: not logged in");
208 NSData *fileData = [[NSFileManager defaultManager] contentsAtPath:@"files/photo.jpg"];
209 NSString *folderId =
@"0BwwA4oUTeiV1UVNwOHItT0xfa2M";
211 GTLRDrive_File *metadata = [GTLRDrive_File object];
212 metadata.name =
@"photo.jpg";
213 metadata.parents = [NSArray arrayWithObject:folderId];
215 GTLRUploadParameters *uploadParameters = [GTLRUploadParameters uploadParametersWithData:fileData MIMEType:@"image/jpeg"];
216 uploadParameters.shouldUploadWithSingleRequest = TRUE;
217 GTLRDriveQuery_FilesCreate *query = [GTLRDriveQuery_FilesCreate queryWithObject:metadata
218 uploadParameters:uploadParameters];
219 query.fields =
@"id";
220 [mDriveAPIDelegate.service executeQuery:query completionHandler:^(GTLRServiceTicket *ticket,
221 GTLRDrive_File *file,
224 NSLog(@"Z5GoogleDriveController.uploadFile: File ID %@", file.identifier);
226 NSLog(@"Z5GoogleDriveController.uploadFile: An error occurred: %@", error);
233 - (void) logFilesList:(NSArray<GTLRDrive_File *> *)fileArr
236 NSMutableString *output = [[NSMutableString alloc] init];
237 if (fileArr.count > 0) {
238 [output appendString:@"Files:\n"];
240 for (GTLRDrive_File *file in fileArr) {
241 [output appendFormat:@"%@ (%@)\n", file.name, file.identifier];
245 [output appendString:@"No files found."];
247 NSLog(
@"V7GoogleDriveViewController.logFilesList: %@", output);
id< V7GoogDriveAPIProtocol > mDriveAPIDelegate
GTLRServiceTicket * listRoot()
GTLRDriveService * service
GTLRServiceTicket * listJournaItemPartRoot:(NSString *journalItemPartRootId)
void createFolder:inFolder:(NSString *newFolderName, [inFolder] NSObject *parent)
instancetype sharedInstance()
GTLRServiceTicket * listJournalRoot:(NSString *journalRootId)
id< U7ParamEditControlDelegate > delegate
Singleton interface to both core and remote data sources.
void logFilesList:(NSArray< GTLRDrive_File *> *fileArr)