OLD | NEW |
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/drive/drive_api_util.h" | 5 #include "chrome/browser/drive/drive_api_util.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/files/file.h" | 9 #include "base/files/file.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
11 #include "base/md5.h" | 11 #include "base/md5.h" |
12 #include "base/strings/string16.h" | 12 #include "base/strings/string16.h" |
13 #include "base/strings/string_util.h" | 13 #include "base/strings/string_util.h" |
14 #include "base/strings/stringprintf.h" | 14 #include "base/strings/stringprintf.h" |
15 #include "base/strings/utf_string_conversions.h" | 15 #include "base/strings/utf_string_conversions.h" |
16 #include "base/values.h" | 16 #include "base/values.h" |
17 #include "google_apis/drive/drive_api_parser.h" | 17 #include "google_apis/drive/drive_api_parser.h" |
18 #include "google_apis/drive/gdata_wapi_parser.h" | |
19 #include "net/base/escape.h" | 18 #include "net/base/escape.h" |
20 #include "third_party/re2/re2/re2.h" | 19 #include "third_party/re2/re2/re2.h" |
21 #include "url/gurl.h" | 20 #include "url/gurl.h" |
22 | 21 |
23 namespace drive { | 22 namespace drive { |
24 namespace util { | 23 namespace util { |
25 namespace { | 24 namespace { |
26 | 25 |
27 struct HostedDocumentKind { | 26 struct HostedDocumentKind { |
28 const char* mime_type; | 27 const char* mime_type; |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
124 std::string CanonicalizeResourceId(const std::string& resource_id) { | 123 std::string CanonicalizeResourceId(const std::string& resource_id) { |
125 // If resource ID is in the old WAPI format starting with a prefix like | 124 // If resource ID is in the old WAPI format starting with a prefix like |
126 // "document:", strip it and return the remaining part. | 125 // "document:", strip it and return the remaining part. |
127 std::string stripped_resource_id; | 126 std::string stripped_resource_id; |
128 if (RE2::FullMatch(resource_id, "^[a-z-]+(?::|%3A)([\\w-]+)$", | 127 if (RE2::FullMatch(resource_id, "^[a-z-]+(?::|%3A)([\\w-]+)$", |
129 &stripped_resource_id)) | 128 &stripped_resource_id)) |
130 return stripped_resource_id; | 129 return stripped_resource_id; |
131 return resource_id; | 130 return resource_id; |
132 } | 131 } |
133 | 132 |
134 scoped_ptr<google_apis::ResourceEntry> | |
135 ConvertFileResourceToResourceEntry( | |
136 const google_apis::FileResource& file_resource) { | |
137 scoped_ptr<google_apis::ResourceEntry> entry(new google_apis::ResourceEntry); | |
138 | |
139 // ResourceEntry | |
140 entry->set_resource_id(file_resource.file_id()); | |
141 if (file_resource.IsDirectory()) | |
142 entry->set_kind(google_apis::ResourceEntry::ENTRY_KIND_FOLDER); | |
143 else if (file_resource.IsHostedDocument()) | |
144 entry->set_kind(google_apis::ResourceEntry::ENTRY_KIND_UNKNOWN); | |
145 else | |
146 entry->set_kind(google_apis::ResourceEntry::ENTRY_KIND_FILE); | |
147 entry->set_title(file_resource.title()); | |
148 | |
149 // If file is removed completely, that information is only available in | |
150 // ChangeResource, and is reflected in |removed_|. If file is trashed, the | |
151 // file entry still exists but with its "trashed" label true. | |
152 entry->set_deleted(file_resource.labels().is_trashed()); | |
153 | |
154 return entry.Pass(); | |
155 } | |
156 | |
157 std::string GetMd5Digest(const base::FilePath& file_path) { | 133 std::string GetMd5Digest(const base::FilePath& file_path) { |
158 const int kBufferSize = 512 * 1024; // 512kB. | 134 const int kBufferSize = 512 * 1024; // 512kB. |
159 | 135 |
160 base::File file(file_path, base::File::FLAG_OPEN | base::File::FLAG_READ); | 136 base::File file(file_path, base::File::FLAG_OPEN | base::File::FLAG_READ); |
161 if (!file.IsValid()) | 137 if (!file.IsValid()) |
162 return std::string(); | 138 return std::string(); |
163 | 139 |
164 base::MD5Context context; | 140 base::MD5Context context; |
165 base::MD5Init(&context); | 141 base::MD5Init(&context); |
166 | 142 |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
207 const std::string extension = base::FilePath(path.Extension()).AsUTF8Unsafe(); | 183 const std::string extension = base::FilePath(path.Extension()).AsUTF8Unsafe(); |
208 for (size_t i = 0; i < arraysize(kHostedDocumentKinds); ++i) { | 184 for (size_t i = 0; i < arraysize(kHostedDocumentKinds); ++i) { |
209 if (extension == kHostedDocumentKinds[i].extension) | 185 if (extension == kHostedDocumentKinds[i].extension) |
210 return true; | 186 return true; |
211 } | 187 } |
212 return extension == kUnknownHostedDocumentExtension; | 188 return extension == kUnknownHostedDocumentExtension; |
213 } | 189 } |
214 | 190 |
215 } // namespace util | 191 } // namespace util |
216 } // namespace drive | 192 } // namespace drive |
OLD | NEW |