| // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #ifndef COMPONENTS_DRIVE_DRIVE_API_UTIL_H_ | 
 | #define COMPONENTS_DRIVE_DRIVE_API_UTIL_H_ | 
 |  | 
 | #include <memory> | 
 | #include <string> | 
 |  | 
 | #include "base/callback.h" | 
 | #include "base/md5.h" | 
 | #include "components/drive/file_errors.h" | 
 | #include "google_apis/drive/drive_api_error_codes.h" | 
 | #include "google_apis/drive/drive_common_callbacks.h" | 
 |  | 
 | namespace base { | 
 | class CancellationFlag; | 
 | class Location; | 
 | class FilePath; | 
 | class TaskRunner; | 
 | }  // namespace base | 
 |  | 
 | namespace drive { | 
 | namespace util { | 
 |  | 
 | // Google Apps MIME types: | 
 | const char kGoogleDocumentMimeType[] = "application/vnd.google-apps.document"; | 
 | const char kGoogleDrawingMimeType[] = "application/vnd.google-apps.drawing"; | 
 | const char kGooglePresentationMimeType[] = | 
 |     "application/vnd.google-apps.presentation"; | 
 | const char kGoogleSpreadsheetMimeType[] = | 
 |     "application/vnd.google-apps.spreadsheet"; | 
 | const char kGoogleTableMimeType[] = "application/vnd.google-apps.table"; | 
 | const char kGoogleFormMimeType[] = "application/vnd.google-apps.form"; | 
 | const char kGoogleMapMimeType[] = "application/vnd.google-apps.map"; | 
 | const char kGoogleSiteMimeType[] = "application/vnd.google-apps.site"; | 
 | const char kDriveFolderMimeType[] = "application/vnd.google-apps.folder"; | 
 |  | 
 | // Escapes ' to \' in the |str|. This is designed to use for string value of | 
 | // search parameter on Drive API v2. | 
 | // See also: https://developers.google.com/drive/search-parameters | 
 | std::string EscapeQueryStringValue(const std::string& str); | 
 |  | 
 | // Parses the query, and builds a search query for Drive API v2. | 
 | // This only supports: | 
 | //   Regular query (e.g. dog => fullText contains 'dog') | 
 | //   Conjunctions | 
 | //     (e.g. dog cat => fullText contains 'dog' and fullText contains 'cat') | 
 | //   Exclusion query (e.g. -cat => not fullText contains 'cat'). | 
 | //   Quoted query (e.g. "dog cat" => fullText contains 'dog cat'). | 
 | // See also: https://developers.google.com/drive/search-parameters | 
 | std::string TranslateQuery(const std::string& original_query); | 
 |  | 
 | // If |resource_id| is in the old resource ID format used by WAPI, converts it | 
 | // into the new format. | 
 | std::string CanonicalizeResourceId(const std::string& resource_id); | 
 |  | 
 | // Returns the (base-16 encoded) MD5 digest of the file content at |file_path|, | 
 | // or an empty string if an error is found. | 
 | std::string GetMd5Digest(const base::FilePath& file_path, | 
 |                          const base::CancellationFlag* cancellation_flag); | 
 |  | 
 | // Returns preferred file extension for hosted documents which have given mime | 
 | // type. | 
 | std::string GetHostedDocumentExtension(const std::string& mime_type); | 
 |  | 
 | // Returns true if the given mime type is corresponding to one of known hosted | 
 | // document types. | 
 | bool IsKnownHostedDocumentMimeType(const std::string& mime_type); | 
 |  | 
 | // Returns true if the given file path has an extension corresponding to one of | 
 | // hosted document types. | 
 | bool HasHostedDocumentExtension(const base::FilePath& path); | 
 |  | 
 | // Runs |task| on |task_runner|, then runs |reply| on the original thread with | 
 | // the resulting error code. | 
 | void RunAsyncTask(base::TaskRunner* task_runner, | 
 |                   const base::Location& from_here, | 
 |                   base::OnceCallback<FileError()> task, | 
 |                   base::OnceCallback<void(FileError)> reply); | 
 |  | 
 | }  // namespace util | 
 | }  // namespace drive | 
 |  | 
 | #endif  // COMPONENTS_DRIVE_DRIVE_API_UTIL_H_ |