Today's Menu  Portugal
journal and plan nutrition
Instance Methods | List of all members
V7GoogDriveAPIController Class Reference

#import <V7GoogDriveAPIController.h>

Inheritance diagram for V7GoogDriveAPIController:
Inheritance graph
[legend]
Collaboration diagram for V7GoogDriveAPIController:
Collaboration graph
[legend]

Instance Methods

(instancetype) - initWithDelegate:
 
(GTLRServiceTicket *) - listRoot
 
(GTLRServiceTicket *) - listJournalRoot:
 
(NSArray *) - listJournalItemRoot:
 
(GTLRServiceTicket *) - listJournaItemPartRoot:
 
(void) - placeRecipe
 
(void) - displayResultWithTicket:finishedWithObject:error: [implementation]
 
(void) - createFolder:inFolder: [implementation]
 
(void) - uploadFile [implementation]
 
(void) - logFilesList: [implementation]
 

Detailed Description

dot_inline_dotgraph_12.png

Definition at line 32 of file V7GoogDriveAPIController.h.

Method Documentation

◆ createFolder:inFolder:()

- (void) createFolder: (NSString *)  newFolderName
inFolder: (NSObject *)  parent 
implementation

Definition at line 177 of file V7GoogDriveAPIController.m.

177  :(NSString *) newFolderName inFolder:(NSObject *) parent
178 {
179  [self createFolder:@"Baked Halibut" inFolder:nil];
180  Z5GoogleLoginController *loginControl = [[[Z5DataController sharedInstance] remoteDataController] loginController];
181  NSLog(@"Z5GoogleDriveController.createFolder: user: %@ new folder name: %@", [loginControl username], newFolderName);
182  if (nil!=[loginControl username]) {
183  // this branch executes, however Error: Code=401 "Login Required"
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,
193  NSError *error) {
194  if (error == nil) {
195  NSLog(@"Z5GoogleDriveController.createFolder: File ID %@", file.identifier);
196  } else {
197  NSLog(@"Z5GoogleDriveController.createFolder: An error occurred: %@", error);
198  }
199  }];
200  } else {
201  NSLog(@"Z5GoogleDriveController.createFolder: not logged in");
202  }
203 }
instancetype sharedInstance()
Singleton interface to both core and remote data sources.

◆ displayResultWithTicket:finishedWithObject:error:()

- (void) displayResultWithTicket: (GTLRServiceTicket *)  ticket
finishedWithObject: (GTLRDrive_FileList *)  result
error: (NSError *)  error 
implementation

Definition at line 129 of file V7GoogDriveAPIController.m.

129  :(GTLRServiceTicket *)ticket
130  finishedWithObject:(GTLRDrive_FileList *)result
131  error:(NSError *)error {
132 
133  NSDictionary<NSString *,id> *extraTicketProps = [ticket ticketProperties];
134  NSString *queryFetchKey = [extraTicketProps objectForKey:@"query-stage"];
135 
136  // NSLog(@"V7GoogDriveAPIController.displayResultWithTicket: queryFetchKey: %@", queryFetchKey);
137  NSLog(@"V7GoogDriveAPIController.displayResultWithTicket: key: %@ count: %lu",
138  queryFetchKey, [result.files count]);
139  if (error == nil) {
140  if ([queryFetchKey isEqualToString:@"chase-root"]) {
141  // TODO: journalRootId: save for multiple access
142  NSString *journalRootId;
143  for (GTLRDrive_File *file in result.files) {
144  journalRootId = file.identifier;
145  }
146  [self listJournalRoot:journalRootId];
147  } else if ([queryFetchKey isEqualToString:@"chase-journal-root"]) {
148  NSLog(@"V7GoogDriveAPIController.displayResultWithTicket: JournalRoot");
149  // this is the original, only, use of .resultStage
150  [mDriveAPIDelegate resultStage:qJournalRoot returnedFiles:result.files];
151  } else if ([queryFetchKey isEqualToString:@"chase-journal-item-root"]) {
152  NSLog(@"V7GoogDriveAPIController.displayResultWithTicket: JournalItemRoot");
153  /* TODO: save result '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];
158  }
159  [self logFilesList:result.files];
160  [mDriveAPIDelegate ticketCompleted:ticket];
161 
162  } else {
163  NSMutableString *errMessage = [[NSMutableString alloc] init];
164  [errMessage appendFormat:@"Error getting presentation data: %@\n", error.localizedDescription];
165  // [self showAlert:@"Error" message:message];
166  NSLog(@"V7GoogDriveAPIController.displayResultWithTicket:: Error: %@", error.localizedDescription);
167  }
168  // END -- Log files list
169 }
NSString * journalRootId

◆ initWithDelegate:()

- (instancetype) initWithDelegate: (id <V7GoogDriveAPIProtocol>)  delegate

Definition at line 28 of file V7GoogDriveAPIController.m.

28  :(id <V7GoogDriveAPIProtocol>)delegate
29 {
30  self = [super init];
31  if (self) {
33  }
34  return self;
35 }
id< V7GoogDriveAPIProtocol > mDriveAPIDelegate
id< U7ParamEditControlDelegate > delegate

◆ listJournaItemPartRoot:()

- (GTLRServiceTicket *) listJournaItemPartRoot: (NSString *)  journalItemPartRootId

Definition at line 105 of file V7GoogDriveAPIController.m.

105  :(NSString *)journalItemPartRootId {
106 
107  NSLog(@"V7GoogDriveAPIController.listJournaItemPartRoot");
108  Z5GoogleDriveController *driveController = [[[Z5DataController sharedInstance] remoteDataController] driveController];
109 
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];
114 
115  NSMutableDictionary<NSString *,id> *extraTicketProps = [[NSMutableDictionary alloc] init];
116  [extraTicketProps setObject:@"chase-journal-item-part-root" forKey:@"query-stage"];
117  [query.executionParameters setTicketProperties:extraTicketProps];
118 
119  // NSLog(@"V7GoogDriveAPIController.listJournaItemPartRoot: authorizer: %@", driveController.service.authorizer);
120 
121  GTLRServiceTicket *queryTicket = [driveController.service executeQuery:query
122  delegate:self
123  didFinishSelector:@selector(displayResultWithTicket:finishedWithObject:error:)];
124 
125  return queryTicket;
126 }
instancetype sharedInstance()
Singleton interface to both core and remote data sources.

◆ listJournalItemRoot:()

- (NSArray *) listJournalItemRoot: (NSArray<GTLRDrive_File *> *)  itemFiles

this will list the title.text, ingredients.json, and instructions - three files when complete`

Definition at line 87 of file V7GoogDriveAPIController.m.

87  :(NSArray<GTLRDrive_File *> *)itemFiles
88 {
89  NSLog(@"V7GoogDriveAPIController.listJournalItemRoot: input file count: %lu", (unsigned long)[itemFiles count]);
90 
91  NSMutableArray * ret = [[NSMutableArray alloc] init];
92  for (GTLRDrive_File *file in itemFiles) {
93  NSLog(@"V7GoogDriveAPIController.listJournalItemRoot: mimeType %@", file.mimeType);
94 
95  [ret addObject:[file name]];
96 
97  if ([file.mimeType isEqualToString:@"application/vnd.google-apps.folder"]) {
98  [self listJournaItemPartRoot:file.identifier];
99  } else {
100 
101  }
102  }
103  return ret;
104 }

◆ listJournalRoot:()

- (GTLRServiceTicket *) listJournalRoot: (NSString *)  journalRootId

Definition at line 60 of file V7GoogDriveAPIController.m.

60  :(NSString *)journalRootId {
61 
62  NSLog(@"V7GoogDriveAPIController.listRoot");
63  Z5GoogleDriveController *driveController = [[[Z5DataController sharedInstance] remoteDataController] driveController];
64 
65  GTLRDriveQuery_FilesList *query = [GTLRDriveQuery_FilesList query];
66  query.fields = @"nextPageToken, files(id, name, mimeType)";
67  query.pageSize = 100;
68  query.q = [NSString stringWithFormat:@"'%@' in parents and mimeType = 'application/vnd.google-apps.folder'",
69  journalRootId];
70 
71  NSMutableDictionary<NSString *,id> *extraTicketProps = [[NSMutableDictionary alloc] init];
72  [extraTicketProps setObject:@"chase-journal-root" forKey:@"query-stage"];
73  [query.executionParameters setTicketProperties:extraTicketProps];
74 
75  NSLog(@"V7GoogDriveAPIController.listRoot: authorizer: %@", driveController.service.authorizer);
76 
77  GTLRServiceTicket *queryTicket = [driveController.service
78  executeQuery:query
79  delegate:self
80  didFinishSelector:@selector(displayResultWithTicket:finishedWithObject:error:)];
81 
82  return queryTicket;
83 }
instancetype sharedInstance()
NSString * journalRootId
Singleton interface to both core and remote data sources.

◆ listRoot()

- (GTLRServiceTicket *) listRoot

Definition at line 38 of file V7GoogDriveAPIController.m.

38  {
39 
41  remoteDataController] driveController];
42  GTLRDriveQuery_FilesList *query = [GTLRDriveQuery_FilesList query];
43  query.fields = @"nextPageToken, files(id, name)";
44  query.pageSize = 100;
45  query.q = @"name = 'NutritionJournal'";
46 
47  NSMutableDictionary<NSString *,id> *extraTicketProps = [[NSMutableDictionary alloc] init];
48  [extraTicketProps setObject:@"chase-root" forKey:@"query-stage"];
49  [query.executionParameters setTicketProperties:extraTicketProps];
50 
51  NSLog(@"V7GoogDriveAPIController.listRoot: authorizer: %@", driveController.service.authorizer);
52 
53  GTLRServiceTicket *queryTicket = [driveController.service executeQuery:query
54  delegate:self
55  didFinishSelector:@selector(displayResultWithTicket:finishedWithObject:error:)];
56 
57  return queryTicket;
58 }
instancetype sharedInstance()
Singleton interface to both core and remote data sources.

◆ logFilesList:()

- (void) logFilesList: (NSArray<GTLRDrive_File *> *)  fileArr
implementation

Definition at line 233 of file V7GoogDriveAPIController.m.

233  :(NSArray<GTLRDrive_File *> *)fileArr
234 {
235  // Log files list
236  NSMutableString *output = [[NSMutableString alloc] init];
237  if (fileArr.count > 0) {
238  [output appendString:@"Files:\n"];
239  int count = 1;
240  for (GTLRDrive_File *file in fileArr) {
241  [output appendFormat:@"%@ (%@)\n", file.name, file.identifier];
242  count++;
243  }
244  } else {
245  [output appendString:@"No files found."];
246  }
247  NSLog(@"V7GoogleDriveViewController.logFilesList: %@", output);
248  // END = Log files list
249 }

◆ placeRecipe()

- (void) placeRecipe

Definition at line 173 of file V7GoogDriveAPIController.m.

174 {
175  [self createFolder:@"Baked Halibut" inFolder:nil];
176 }

◆ uploadFile()

- (void) uploadFile
implementation

Definition at line 205 of file V7GoogDriveAPIController.m.

206 {
207  [self createFolder:@"Baked Halibut" inFolder:nil];
208  NSData *fileData = [[NSFileManager defaultManager] contentsAtPath:@"files/photo.jpg"];
209  NSString *folderId = @"0BwwA4oUTeiV1UVNwOHItT0xfa2M";
210 
211  GTLRDrive_File *metadata = [GTLRDrive_File object];
212  metadata.name = @"photo.jpg";
213  metadata.parents = [NSArray arrayWithObject:folderId];
214 
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,
222  NSError *error) {
223  if (error == nil) {
224  NSLog(@"Z5GoogleDriveController.uploadFile: File ID %@", file.identifier);
225  } else {
226  NSLog(@"Z5GoogleDriveController.uploadFile: An error occurred: %@", error);
227  }
228  }];
229 }

The documentation for this class was generated from the following files: