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
3 // found in the LICENSE file.
5 #ifndef CHROME_BROWSER_DRIVE_DRIVE_API_UTIL_H_
6 #define CHROME_BROWSER_DRIVE_DRIVE_API_UTIL_H_
10 #include "base/memory/scoped_ptr.h"
11 #include "chrome/browser/drive/drive_service_interface.h"
12 #include "google_apis/drive/drive_common_callbacks.h"
13 #include "google_apis/drive/drive_entry_kinds.h"
14 #include "google_apis/drive/gdata_errorcode.h"
23 namespace google_apis
{
24 class AccountMetadata
;
36 } // namespace google_apis
41 // Returns true if Drive v2 API is enabled via commandline switch.
42 bool IsDriveV2ApiEnabled();
44 // Escapes ' to \' in the |str|. This is designed to use for string value of
45 // search parameter on Drive API v2.
46 // See also: https://developers.google.com/drive/search-parameters
47 std::string
EscapeQueryStringValue(const std::string
& str
);
49 // Parses the query, and builds a search query for Drive API v2.
50 // This only supports:
51 // Regular query (e.g. dog => fullText contains 'dog')
53 // (e.g. dog cat => fullText contains 'dog' and fullText contains 'cat')
54 // Exclusion query (e.g. -cat => not fullText contains 'cat').
55 // Quoted query (e.g. "dog cat" => fullText contains 'dog cat').
56 // See also: https://developers.google.com/drive/search-parameters
57 std::string
TranslateQuery(const std::string
& original_query
);
59 // Extracts resource_id out of edit url.
60 std::string
ExtractResourceIdFromUrl(const GURL
& url
);
62 // If |resource_id| is in the old resource ID format used by WAPI, converts it
63 // into the new format.
64 std::string
CanonicalizeResourceId(const std::string
& resource_id
);
66 // Returns a ResourceIdCanonicalizer which returns the argument.
67 ResourceIdCanonicalizer
GetIdentityResourceIdCanonicalizer();
69 // Note: Following constants and a function are used to support GetShareUrl on
70 // Drive API v2. Unfortunately, there is no support on Drive API v2, so we need
71 // to fall back to GData WAPI for the GetShareUrl. Thus, these are shared by
72 // both GDataWapiService and DriveAPIService.
73 // TODO(hidehiko): Remove these from here, when Drive API v2 supports
76 // OAuth2 scopes for the GData WAPI.
77 extern const char kDocsListScope
[];
78 extern const char kDriveAppsScope
[];
80 // Extracts an url to the sharing dialog and returns it via |callback|. If
81 // the share url doesn't exist, then an empty url is returned.
82 void ParseShareUrlAndRun(const google_apis::GetShareUrlCallback
& callback
,
83 google_apis::GDataErrorCode error
,
84 scoped_ptr
<base::Value
> value
);
86 // Converts AccountMetadata to AboutResource.
87 // Here, |root_resource_id| is also needed, as it is contained by AboutResource
88 // but not by AccountMetadata.
89 scoped_ptr
<google_apis::AboutResource
>
90 ConvertAccountMetadataToAboutResource(
91 const google_apis::AccountMetadata
& account_metadata
,
92 const std::string
& root_resource_id
);
94 // Converts AccountMetadata to AppList.
95 scoped_ptr
<google_apis::AppList
>
96 ConvertAccountMetadataToAppList(
97 const google_apis::AccountMetadata
& account_metadata
);
99 // Converts ResourceEntry to FileResource.
100 scoped_ptr
<google_apis::FileResource
>
101 ConvertResourceEntryToFileResource(const google_apis::ResourceEntry
& entry
);
103 // Returns the GData WAPI's Kind of the FileResource.
104 google_apis::DriveEntryKind
GetKind(
105 const google_apis::FileResource
& file_resource
);
107 // Converts FileResource to ResourceEntry.
108 scoped_ptr
<google_apis::ResourceEntry
>
109 ConvertFileResourceToResourceEntry(
110 const google_apis::FileResource
& file_resource
);
112 // Converts ChangeResource to ResourceEntry.
113 scoped_ptr
<google_apis::ResourceEntry
>
114 ConvertChangeResourceToResourceEntry(
115 const google_apis::ChangeResource
& change_resource
);
117 // Converts FileList to ResourceList.
118 scoped_ptr
<google_apis::ResourceList
>
119 ConvertFileListToResourceList(const google_apis::FileList
& file_list
);
121 // Converts ChangeList to ResourceList.
122 scoped_ptr
<google_apis::ResourceList
>
123 ConvertChangeListToResourceList(const google_apis::ChangeList
& change_list
);
125 // Returns the (base-16 encoded) MD5 digest of the file content at |file_path|,
126 // or an empty string if an error is found.
127 std::string
GetMd5Digest(const base::FilePath
& file_path
);
129 // The resource ID for the root directory for WAPI is defined in the spec:
130 // https://developers.google.com/google-apps/documents-list/
131 extern const char kWapiRootDirectoryResourceId
[];
136 #endif // CHROME_BROWSER_DRIVE_DRIVE_API_UTIL_H_