Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(183)

Side by Side Diff: chrome/browser/chromeos/gdata/drive_api_parser.cc

Issue 10829139: Add parsers for Drive v2 Change/ChangeList/Parents (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Added class comments. Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/chromeos/gdata/drive_api_parser.h" 5 #include "chrome/browser/chromeos/gdata/drive_api_parser.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/file_path.h" 10 #include "base/file_path.h"
(...skipping 19 matching lines...) Expand all
30 return true; 30 return true;
31 } 31 }
32 32
33 // Drive v2 API JSON names. 33 // Drive v2 API JSON names.
34 34
35 // Common 35 // Common
36 const char kKind[] = "kind"; 36 const char kKind[] = "kind";
37 const char kId[] = "id"; 37 const char kId[] = "id";
38 const char kETag[] = "etag"; 38 const char kETag[] = "etag";
39 const char kItems[] = "items"; 39 const char kItems[] = "items";
40 const char kLargestChangeId[] = "largestChangeId";
40 41
41 // About Resource: 42 // About Resource:
42 const char kAboutKind[] = "drive#about"; 43 const char kAboutKind[] = "drive#about";
43 const char kRootFolderId[] = "rootFolderId"; 44 const char kRootFolderId[] = "rootFolderId";
44 const char kQuotaBytesTotal[] = "quotaBytesTotal"; 45 const char kQuotaBytesTotal[] = "quotaBytesTotal";
45 const char kQuotaBytesUsed[] = "quotaBytesUsed"; 46 const char kQuotaBytesUsed[] = "quotaBytesUsed";
46 const char kLargestChangeId[] = "largestChangeId";
47 47
48 // App Icon: 48 // App Icon:
49 const char kCategory[] = "category"; 49 const char kCategory[] = "category";
50 const char kSize[] = "size"; 50 const char kSize[] = "size";
51 const char kIconUrl[] = "iconUrl"; 51 const char kIconUrl[] = "iconUrl";
52 52
53 // Apps Resource: 53 // Apps Resource:
54 const char kAppKind[] = "drive#app"; 54 const char kAppKind[] = "drive#app";
55 const char kName[] = "name"; 55 const char kName[] = "name";
56 const char kObjectType[] = "objectType"; 56 const char kObjectType[] = "objectType";
57 const char kSupportsCreate[] = "supportsCreate"; 57 const char kSupportsCreate[] = "supportsCreate";
58 const char kSupportsImport[] = "supportsImport"; 58 const char kSupportsImport[] = "supportsImport";
59 const char kInstalled[] = "installed"; 59 const char kInstalled[] = "installed";
60 const char kAuthorized[] = "authorized"; 60 const char kAuthorized[] = "authorized";
61 const char kProductUrl[] = "productUrl"; 61 const char kProductUrl[] = "productUrl";
62 const char kPrimaryMimeTypes[] = "primaryMimeTypes"; 62 const char kPrimaryMimeTypes[] = "primaryMimeTypes";
63 const char kSecondaryMimeTypes[] = "secondaryMimeTypes"; 63 const char kSecondaryMimeTypes[] = "secondaryMimeTypes";
64 const char kPrimaryFileExtensions[] = "primaryFileExtensions"; 64 const char kPrimaryFileExtensions[] = "primaryFileExtensions";
65 const char kSecondaryFileExtensions[] = "secondaryFileExtensions"; 65 const char kSecondaryFileExtensions[] = "secondaryFileExtensions";
66 const char kIcons[] = "icons"; 66 const char kIcons[] = "icons";
67 67
68 // Apps List: 68 // Apps List:
69 const char kAppListKind[] = "drive#appList"; 69 const char kAppListKind[] = "drive#appList";
70 70
71 // Parent Resource:
72 const char kParentReferenceKind[] = "drive#parentReference";
73 const char kIsRoot[] = "isRoot";
74
71 // File Resource: 75 // File Resource:
72 const char kFileKind[] = "drive#file"; 76 const char kFileKind[] = "drive#file";
73 const char kMimeType[] = "mimeType"; 77 const char kMimeType[] = "mimeType";
74 const char kTitle[] = "title"; 78 const char kTitle[] = "title";
75 const char kModifiedByMeDate[] = "modifiedByMeDate"; 79 const char kModifiedByMeDate[] = "modifiedByMeDate";
80 const char kParents[] = "parents";
76 const char kDownloadUrl[] = "downloadUrl"; 81 const char kDownloadUrl[] = "downloadUrl";
77 const char kFileExtension[] = "fileExtension"; 82 const char kFileExtension[] = "fileExtension";
78 const char kMd5Checksum[] = "md5Checksum"; 83 const char kMd5Checksum[] = "md5Checksum";
79 const char kFileSize[] = "fileSize"; 84 const char kFileSize[] = "fileSize";
80 85
81 const char kDriveFolderMimeType[] = "application/vnd.google-apps.folder"; 86 const char kDriveFolderMimeType[] = "application/vnd.google-apps.folder";
82 87
83 // Files List: 88 // Files List:
84 const char kFileListKind[] = "drive#fileList"; 89 const char kFileListKind[] = "drive#fileList";
85 const char kNextPageToken[] = "nextPageToken"; 90 const char kNextPageToken[] = "nextPageToken";
86 const char kNextLink[] = "nextLink"; 91 const char kNextLink[] = "nextLink";
87 92
93 // Change Resource:
94 const char kChangeKind[] = "drive#change";
95 const char kFileId[] = "fileId";
96 const char kFile[] = "file";
97
98 // Changes List:
99 const char kChangeListKind[] = "drive#changeList";
100
88 // Maps category name to enum IconCategory. 101 // Maps category name to enum IconCategory.
89 struct AppIconCategoryMap { 102 struct AppIconCategoryMap {
90 gdata::DriveAppIcon::IconCategory category; 103 gdata::DriveAppIcon::IconCategory category;
91 const char* category_name; 104 const char* category_name;
92 }; 105 };
93 106
94 const AppIconCategoryMap kAppIconCategoryMap[] = { 107 const AppIconCategoryMap kAppIconCategoryMap[] = {
95 { gdata::DriveAppIcon::DOCUMENT, "document" }, 108 { gdata::DriveAppIcon::DOCUMENT, "document" },
96 { gdata::DriveAppIcon::APPLICATION, "application" }, 109 { gdata::DriveAppIcon::APPLICATION, "application" },
97 { gdata::DriveAppIcon::SHARED_DOCUMENT, "documentShared" }, 110 { gdata::DriveAppIcon::SHARED_DOCUMENT, "documentShared" },
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
289 bool AppList::Parse(const base::Value& value) { 302 bool AppList::Parse(const base::Value& value) {
290 base::JSONValueConverter<AppList> converter; 303 base::JSONValueConverter<AppList> converter;
291 if (!converter.Convert(value, this)) { 304 if (!converter.Convert(value, this)) {
292 LOG(ERROR) << "Unable to parse: Invalid AppList"; 305 LOG(ERROR) << "Unable to parse: Invalid AppList";
293 return false; 306 return false;
294 } 307 }
295 return true; 308 return true;
296 } 309 }
297 310
298 //////////////////////////////////////////////////////////////////////////////// 311 ////////////////////////////////////////////////////////////////////////////////
312 // ParentReference implementation
313
314 ParentReference::ParentReference() : is_root_(false) {}
315
316 ParentReference::~ParentReference() {}
317
318 // static
319 void ParentReference::RegisterJSONConverter(
320 base::JSONValueConverter<ParentReference>* converter) {
321 converter->RegisterStringField(kId, &ParentReference::file_id_);
322 converter->RegisterBoolField(kIsRoot, &ParentReference::is_root_);
323 }
324
325 // static
326 scoped_ptr<ParentReference>
327 ParentReference::CreateFrom(const base::Value& value) {
328 scoped_ptr<ParentReference> reference(new ParentReference());
329 if (!IsResourceKindExpected(value, kParentReferenceKind) ||
330 !reference->Parse(value)) {
331 LOG(ERROR) << "Unable to create: Invalid ParentRefernce JSON!";
332 return scoped_ptr<ParentReference>(NULL);
333 }
334 return reference.Pass();
335 }
336
337 bool ParentReference::Parse(const base::Value& value) {
338 base::JSONValueConverter<ParentReference> converter;
339 if (!converter.Convert(value, this)) {
340 LOG(ERROR) << "Unable to parse: Invalid ParentReference";
341 return false;
342 }
343 return true;
344 }
345
346 ////////////////////////////////////////////////////////////////////////////////
299 // FileResource implementation 347 // FileResource implementation
300 348
301 FileResource::FileResource() : file_size_(0) {} 349 FileResource::FileResource() : file_size_(0) {}
302 350
303 FileResource::~FileResource() {} 351 FileResource::~FileResource() {}
304 352
305 // static 353 // static
306 void FileResource::RegisterJSONConverter( 354 void FileResource::RegisterJSONConverter(
307 base::JSONValueConverter<FileResource>* converter) { 355 base::JSONValueConverter<FileResource>* converter) {
308 converter->RegisterStringField(kId, &FileResource::file_id_); 356 converter->RegisterStringField(kId, &FileResource::file_id_);
309 converter->RegisterStringField(kETag, &FileResource::etag_); 357 converter->RegisterStringField(kETag, &FileResource::etag_);
310 converter->RegisterStringField(kMimeType, &FileResource::mime_type_); 358 converter->RegisterStringField(kMimeType, &FileResource::mime_type_);
311 converter->RegisterStringField(kTitle, &FileResource::title_); 359 converter->RegisterStringField(kTitle, &FileResource::title_);
312 converter->RegisterCustomField<base::Time>( 360 converter->RegisterCustomField<base::Time>(
313 kModifiedByMeDate, 361 kModifiedByMeDate,
314 &FileResource::modified_by_me_date_, 362 &FileResource::modified_by_me_date_,
315 &gdata::util::GetTimeFromString); 363 &gdata::util::GetTimeFromString);
364 converter->RegisterRepeatedMessage<ParentReference>(kParents,
365 &FileResource::parents_);
316 converter->RegisterCustomField<GURL>(kDownloadUrl, 366 converter->RegisterCustomField<GURL>(kDownloadUrl,
317 &FileResource::download_url_, 367 &FileResource::download_url_,
318 GetGURLFromString); 368 GetGURLFromString);
319 converter->RegisterStringField(kFileExtension, 369 converter->RegisterStringField(kFileExtension,
320 &FileResource::file_extension_); 370 &FileResource::file_extension_);
321 converter->RegisterStringField(kMd5Checksum, &FileResource::md5_checksum_); 371 converter->RegisterStringField(kMd5Checksum, &FileResource::md5_checksum_);
322 converter->RegisterCustomField<int64>(kFileSize, 372 converter->RegisterCustomField<int64>(kFileSize,
323 &FileResource::file_size_, 373 &FileResource::file_size_,
324 &base::StringToInt64); 374 &base::StringToInt64);
325 } 375 }
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
379 429
380 bool FileList::Parse(const base::Value& value) { 430 bool FileList::Parse(const base::Value& value) {
381 base::JSONValueConverter<FileList> converter; 431 base::JSONValueConverter<FileList> converter;
382 if (!converter.Convert(value, this)) { 432 if (!converter.Convert(value, this)) {
383 LOG(ERROR) << "Unable to parse: Invalid FileList"; 433 LOG(ERROR) << "Unable to parse: Invalid FileList";
384 return false; 434 return false;
385 } 435 }
386 return true; 436 return true;
387 } 437 }
388 438
439 ////////////////////////////////////////////////////////////////////////////////
440 // ChangeResource implementation
441
442 ChangeResource::ChangeResource() {}
443
444 ChangeResource::~ChangeResource() {}
445
446 // static
447 void ChangeResource::RegisterJSONConverter(
448 base::JSONValueConverter<ChangeResource>* converter) {
449 converter->RegisterCustomField<int64>(kId,
450 &ChangeResource::change_id_,
451 &base::StringToInt64);
452 converter->RegisterStringField(kFileId, &ChangeResource::file_id_);
453 converter->RegisterNestedField(kFile, &ChangeResource::file_);
454 }
455
456 // static
457 scoped_ptr<ChangeResource>
458 ChangeResource::CreateFrom(const base::Value& value) {
459 scoped_ptr<ChangeResource> resource(new ChangeResource());
460 if (!IsResourceKindExpected(value, kChangeKind) || !resource->Parse(value)) {
461 LOG(ERROR) << "Unable to create: Invalid ChangeResource JSON!";
462 return scoped_ptr<ChangeResource>(NULL);
463 }
464 return resource.Pass();
465 }
466
467 bool ChangeResource::Parse(const base::Value& value) {
468 base::JSONValueConverter<ChangeResource> converter;
469 if (!converter.Convert(value, this)) {
470 LOG(ERROR) << "Unable to parse: Invalid ChangeResource";
471 return false;
472 }
473 return true;
474 }
475
476 ////////////////////////////////////////////////////////////////////////////////
477 // ChangeList implementation
478
479 ChangeList::ChangeList() : largest_change_id_(0) {}
480
481 ChangeList::~ChangeList() {}
482
483 // static
484 void ChangeList::RegisterJSONConverter(
485 base::JSONValueConverter<ChangeList>* converter) {
486 converter->RegisterStringField(kETag, &ChangeList::etag_);
487 converter->RegisterStringField(kNextPageToken, &ChangeList::next_page_token_);
488 converter->RegisterCustomField<GURL>(kNextLink,
489 &ChangeList::next_link_,
490 GetGURLFromString);
491 converter->RegisterCustomField<int64>(kLargestChangeId,
492 &ChangeList::largest_change_id_,
493 &base::StringToInt64);
494 converter->RegisterRepeatedMessage<ChangeResource>(kItems,
495 &ChangeList::items_);
496 }
497
498 // static
499 scoped_ptr<ChangeList> ChangeList::CreateFrom(const base::Value& value) {
500 scoped_ptr<ChangeList> resource(new ChangeList());
501 if (!IsResourceKindExpected(value, kChangeListKind) ||
502 !resource->Parse(value)) {
503 LOG(ERROR) << "Unable to create: Invalid ChangeList JSON!";
504 return scoped_ptr<ChangeList>(NULL);
505 }
506 return resource.Pass();
507 }
508
509 bool ChangeList::Parse(const base::Value& value) {
510 base::JSONValueConverter<ChangeList> converter;
511 if (!converter.Convert(value, this)) {
512 LOG(ERROR) << "Unable to parse: Invalid ChangeList";
513 return false;
514 }
515 return true;
516 }
517
389 } // namespace gdata 518 } // namespace gdata
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698