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

Unified Diff: chrome/browser/google_apis/drive_api_requests.cc

Issue 96413002: Move c/b/google_apis to google_apis/drive. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 7 years 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/google_apis/drive_api_requests.cc
diff --git a/chrome/browser/google_apis/drive_api_requests.cc b/chrome/browser/google_apis/drive_api_requests.cc
deleted file mode 100644
index 8747adb12e4e61a4b84e0dd931751993ae8b40ef..0000000000000000000000000000000000000000
--- a/chrome/browser/google_apis/drive_api_requests.cc
+++ /dev/null
@@ -1,715 +0,0 @@
-// 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.
-
-#include "chrome/browser/google_apis/drive_api_requests.h"
-
-#include "base/bind.h"
-#include "base/callback.h"
-#include "base/json/json_writer.h"
-#include "base/location.h"
-#include "base/sequenced_task_runner.h"
-#include "base/task_runner_util.h"
-#include "base/values.h"
-#include "chrome/browser/google_apis/drive_api_parser.h"
-#include "chrome/browser/google_apis/request_sender.h"
-#include "chrome/browser/google_apis/request_util.h"
-#include "chrome/browser/google_apis/time_util.h"
-#include "net/base/url_util.h"
-
-namespace google_apis {
-namespace {
-
-const char kContentTypeApplicationJson[] = "application/json";
-const char kParentLinkKind[] = "drive#fileLink";
-
-// Parses the JSON value to a resource typed |T| and runs |callback| on the UI
-// thread once parsing is done.
-template<typename T>
-void ParseJsonAndRun(
- const base::Callback<void(GDataErrorCode, scoped_ptr<T>)>& callback,
- GDataErrorCode error,
- scoped_ptr<base::Value> value) {
- DCHECK(!callback.is_null());
-
- scoped_ptr<T> resource;
- if (value) {
- resource = T::CreateFrom(*value);
- if (!resource) {
- // Failed to parse the JSON value, although the JSON value is available,
- // so let the callback know the parsing error.
- error = GDATA_PARSE_ERROR;
- }
- }
-
- callback.Run(error, resource.Pass());
-}
-
-// Thin adapter of T::CreateFrom.
-template<typename T>
-scoped_ptr<T> ParseJsonOnBlockingPool(scoped_ptr<base::Value> value) {
- return T::CreateFrom(*value);
-}
-
-// Runs |callback| with given |error| and |value|. If |value| is null,
-// overwrites |error| to GDATA_PARSE_ERROR.
-template<typename T>
-void ParseJsonOnBlockingPoolAndRunAfterBlockingPoolTask(
- const base::Callback<void(GDataErrorCode, scoped_ptr<T>)>& callback,
- GDataErrorCode error, scoped_ptr<T> value) {
- if (!value)
- error = GDATA_PARSE_ERROR;
- callback.Run(error, value.Pass());
-}
-
-// Parses the JSON value to a resource typed |T| and runs |callback| on
-// blocking pool, and then run on the current thread.
-// TODO(hidehiko): Move this and ParseJsonAndRun defined above into base with
-// merging the tasks running on blocking pool into one.
-template<typename T>
-void ParseJsonOnBlockingPoolAndRun(
- scoped_refptr<base::TaskRunner> blocking_task_runner,
- const base::Callback<void(GDataErrorCode, scoped_ptr<T>)>& callback,
- GDataErrorCode error,
- scoped_ptr<base::Value> value) {
- DCHECK(!callback.is_null());
-
- if (!value) {
- callback.Run(error, scoped_ptr<T>());
- return;
- }
-
- base::PostTaskAndReplyWithResult(
- blocking_task_runner,
- FROM_HERE,
- base::Bind(&ParseJsonOnBlockingPool<T>, base::Passed(&value)),
- base::Bind(&ParseJsonOnBlockingPoolAndRunAfterBlockingPoolTask<T>,
- callback, error));
-}
-
-// Parses the JSON value to FileResource instance and runs |callback| on the
-// UI thread once parsing is done.
-// This is customized version of ParseJsonAndRun defined above to adapt the
-// remaining response type.
-void ParseFileResourceWithUploadRangeAndRun(
- const drive::UploadRangeCallback& callback,
- const UploadRangeResponse& response,
- scoped_ptr<base::Value> value) {
- DCHECK(!callback.is_null());
-
- scoped_ptr<FileResource> file_resource;
- if (value) {
- file_resource = FileResource::CreateFrom(*value);
- if (!file_resource) {
- callback.Run(
- UploadRangeResponse(GDATA_PARSE_ERROR,
- response.start_position_received,
- response.end_position_received),
- scoped_ptr<FileResource>());
- return;
- }
- }
-
- callback.Run(response, file_resource.Pass());
-}
-
-} // namespace
-
-namespace drive {
-
-//============================ DriveApiDataRequest ===========================
-
-DriveApiDataRequest::DriveApiDataRequest(RequestSender* sender,
- const GetDataCallback& callback)
- : GetDataRequest(sender, callback) {
-}
-
-DriveApiDataRequest::~DriveApiDataRequest() {
-}
-
-GURL DriveApiDataRequest::GetURL() const {
- GURL url = GetURLInternal();
- if (!fields_.empty())
- url = net::AppendOrReplaceQueryParameter(url, "fields", fields_);
- return url;
-}
-
-//=============================== FilesGetRequest =============================
-
-FilesGetRequest::FilesGetRequest(
- RequestSender* sender,
- const DriveApiUrlGenerator& url_generator,
- const FileResourceCallback& callback)
- : DriveApiDataRequest(
- sender,
- base::Bind(&ParseJsonAndRun<FileResource>, callback)),
- url_generator_(url_generator) {
- DCHECK(!callback.is_null());
-}
-
-FilesGetRequest::~FilesGetRequest() {}
-
-GURL FilesGetRequest::GetURLInternal() const {
- return url_generator_.GetFilesGetUrl(file_id_);
-}
-
-//============================ FilesInsertRequest ============================
-
-FilesInsertRequest::FilesInsertRequest(
- RequestSender* sender,
- const DriveApiUrlGenerator& url_generator,
- const FileResourceCallback& callback)
- : DriveApiDataRequest(
- sender,
- base::Bind(&ParseJsonAndRun<FileResource>, callback)),
- url_generator_(url_generator) {
- DCHECK(!callback.is_null());
-}
-
-FilesInsertRequest::~FilesInsertRequest() {}
-
-net::URLFetcher::RequestType FilesInsertRequest::GetRequestType() const {
- return net::URLFetcher::POST;
-}
-
-bool FilesInsertRequest::GetContentData(std::string* upload_content_type,
- std::string* upload_content) {
- *upload_content_type = kContentTypeApplicationJson;
-
- base::DictionaryValue root;
-
- if (!mime_type_.empty())
- root.SetString("mimeType", mime_type_);
-
- if (!parents_.empty()) {
- base::ListValue* parents_value = new base::ListValue;
- for (size_t i = 0; i < parents_.size(); ++i) {
- base::DictionaryValue* parent = new base::DictionaryValue;
- parent->SetString("id", parents_[i]);
- parents_value->Append(parent);
- }
- root.Set("parents", parents_value);
- }
-
- if (!title_.empty())
- root.SetString("title", title_);
-
- base::JSONWriter::Write(&root, upload_content);
- DVLOG(1) << "FilesInsert data: " << *upload_content_type << ", ["
- << *upload_content << "]";
- return true;
-}
-
-GURL FilesInsertRequest::GetURLInternal() const {
- return url_generator_.GetFilesInsertUrl();
-}
-
-//============================== FilesPatchRequest ============================
-
-FilesPatchRequest::FilesPatchRequest(
- RequestSender* sender,
- const DriveApiUrlGenerator& url_generator,
- const FileResourceCallback& callback)
- : DriveApiDataRequest(
- sender,
- base::Bind(&ParseJsonAndRun<FileResource>, callback)),
- url_generator_(url_generator),
- set_modified_date_(false),
- update_viewed_date_(true) {
- DCHECK(!callback.is_null());
-}
-
-FilesPatchRequest::~FilesPatchRequest() {}
-
-net::URLFetcher::RequestType FilesPatchRequest::GetRequestType() const {
- return net::URLFetcher::PATCH;
-}
-
-std::vector<std::string> FilesPatchRequest::GetExtraRequestHeaders() const {
- std::vector<std::string> headers;
- headers.push_back(util::kIfMatchAllHeader);
- return headers;
-}
-
-GURL FilesPatchRequest::GetURLInternal() const {
- return url_generator_.GetFilesPatchUrl(
- file_id_, set_modified_date_, update_viewed_date_);
-}
-
-bool FilesPatchRequest::GetContentData(std::string* upload_content_type,
- std::string* upload_content) {
- if (title_.empty() &&
- modified_date_.is_null() &&
- last_viewed_by_me_date_.is_null() &&
- parents_.empty())
- return false;
-
- *upload_content_type = kContentTypeApplicationJson;
-
- base::DictionaryValue root;
- if (!title_.empty())
- root.SetString("title", title_);
-
- if (!modified_date_.is_null())
- root.SetString("modifiedDate", util::FormatTimeAsString(modified_date_));
-
- if (!last_viewed_by_me_date_.is_null()) {
- root.SetString("lastViewedByMeDate",
- util::FormatTimeAsString(last_viewed_by_me_date_));
- }
-
- if (!parents_.empty()) {
- base::ListValue* parents_value = new base::ListValue;
- for (size_t i = 0; i < parents_.size(); ++i) {
- base::DictionaryValue* parent = new base::DictionaryValue;
- parent->SetString("id", parents_[i]);
- parents_value->Append(parent);
- }
- root.Set("parents", parents_value);
- }
-
- base::JSONWriter::Write(&root, upload_content);
- DVLOG(1) << "FilesPatch data: " << *upload_content_type << ", ["
- << *upload_content << "]";
- return true;
-}
-
-//============================= FilesCopyRequest ==============================
-
-FilesCopyRequest::FilesCopyRequest(
- RequestSender* sender,
- const DriveApiUrlGenerator& url_generator,
- const FileResourceCallback& callback)
- : DriveApiDataRequest(
- sender,
- base::Bind(&ParseJsonAndRun<FileResource>, callback)),
- url_generator_(url_generator) {
- DCHECK(!callback.is_null());
-}
-
-FilesCopyRequest::~FilesCopyRequest() {
-}
-
-net::URLFetcher::RequestType FilesCopyRequest::GetRequestType() const {
- return net::URLFetcher::POST;
-}
-
-GURL FilesCopyRequest::GetURLInternal() const {
- return url_generator_.GetFilesCopyUrl(file_id_);
-}
-
-bool FilesCopyRequest::GetContentData(std::string* upload_content_type,
- std::string* upload_content) {
- if (parents_.empty() && title_.empty())
- return false;
-
- *upload_content_type = kContentTypeApplicationJson;
-
- base::DictionaryValue root;
-
- if (!modified_date_.is_null())
- root.SetString("modifiedDate", util::FormatTimeAsString(modified_date_));
-
- if (!parents_.empty()) {
- base::ListValue* parents_value = new base::ListValue;
- for (size_t i = 0; i < parents_.size(); ++i) {
- base::DictionaryValue* parent = new base::DictionaryValue;
- parent->SetString("id", parents_[i]);
- parents_value->Append(parent);
- }
- root.Set("parents", parents_value);
- }
-
- if (!title_.empty())
- root.SetString("title", title_);
-
- base::JSONWriter::Write(&root, upload_content);
- DVLOG(1) << "FilesCopy data: " << *upload_content_type << ", ["
- << *upload_content << "]";
- return true;
-}
-
-//============================= FilesListRequest =============================
-
-FilesListRequest::FilesListRequest(
- RequestSender* sender,
- const DriveApiUrlGenerator& url_generator,
- const FileListCallback& callback)
- : DriveApiDataRequest(
- sender,
- base::Bind(&ParseJsonOnBlockingPoolAndRun<FileList>,
- make_scoped_refptr(sender->blocking_task_runner()),
- callback)),
- url_generator_(url_generator),
- max_results_(100) {
- DCHECK(!callback.is_null());
-}
-
-FilesListRequest::~FilesListRequest() {}
-
-GURL FilesListRequest::GetURLInternal() const {
- return url_generator_.GetFilesListUrl(max_results_, page_token_, q_);
-}
-
-//======================== FilesListNextPageRequest =========================
-
-FilesListNextPageRequest::FilesListNextPageRequest(
- RequestSender* sender,
- const FileListCallback& callback)
- : DriveApiDataRequest(
- sender,
- base::Bind(&ParseJsonOnBlockingPoolAndRun<FileList>,
- make_scoped_refptr(sender->blocking_task_runner()),
- callback)) {
- DCHECK(!callback.is_null());
-}
-
-FilesListNextPageRequest::~FilesListNextPageRequest() {
-}
-
-GURL FilesListNextPageRequest::GetURLInternal() const {
- return next_link_;
-}
-
-//============================ FilesTrashRequest =============================
-
-FilesTrashRequest::FilesTrashRequest(
- RequestSender* sender,
- const DriveApiUrlGenerator& url_generator,
- const FileResourceCallback& callback)
- : DriveApiDataRequest(
- sender,
- base::Bind(&ParseJsonAndRun<FileResource>, callback)),
- url_generator_(url_generator) {
- DCHECK(!callback.is_null());
-}
-
-FilesTrashRequest::~FilesTrashRequest() {}
-
-net::URLFetcher::RequestType FilesTrashRequest::GetRequestType() const {
- return net::URLFetcher::POST;
-}
-
-GURL FilesTrashRequest::GetURLInternal() const {
- return url_generator_.GetFilesTrashUrl(file_id_);
-}
-
-//============================== AboutGetRequest =============================
-
-AboutGetRequest::AboutGetRequest(
- RequestSender* sender,
- const DriveApiUrlGenerator& url_generator,
- const AboutResourceCallback& callback)
- : DriveApiDataRequest(
- sender,
- base::Bind(&ParseJsonAndRun<AboutResource>, callback)),
- url_generator_(url_generator) {
- DCHECK(!callback.is_null());
-}
-
-AboutGetRequest::~AboutGetRequest() {}
-
-GURL AboutGetRequest::GetURLInternal() const {
- return url_generator_.GetAboutGetUrl();
-}
-
-//============================ ChangesListRequest ===========================
-
-ChangesListRequest::ChangesListRequest(
- RequestSender* sender,
- const DriveApiUrlGenerator& url_generator,
- const ChangeListCallback& callback)
- : DriveApiDataRequest(
- sender,
- base::Bind(&ParseJsonOnBlockingPoolAndRun<ChangeList>,
- make_scoped_refptr(sender->blocking_task_runner()),
- callback)),
- url_generator_(url_generator),
- include_deleted_(true),
- max_results_(100),
- start_change_id_(0) {
- DCHECK(!callback.is_null());
-}
-
-ChangesListRequest::~ChangesListRequest() {}
-
-GURL ChangesListRequest::GetURLInternal() const {
- return url_generator_.GetChangesListUrl(
- include_deleted_, max_results_, page_token_, start_change_id_);
-}
-
-//======================== ChangesListNextPageRequest =========================
-
-ChangesListNextPageRequest::ChangesListNextPageRequest(
- RequestSender* sender,
- const ChangeListCallback& callback)
- : DriveApiDataRequest(
- sender,
- base::Bind(&ParseJsonOnBlockingPoolAndRun<ChangeList>,
- make_scoped_refptr(sender->blocking_task_runner()),
- callback)) {
- DCHECK(!callback.is_null());
-}
-
-ChangesListNextPageRequest::~ChangesListNextPageRequest() {
-}
-
-GURL ChangesListNextPageRequest::GetURLInternal() const {
- return next_link_;
-}
-
-//============================== AppsListRequest ===========================
-
-AppsListRequest::AppsListRequest(
- RequestSender* sender,
- const DriveApiUrlGenerator& url_generator,
- const AppListCallback& callback)
- : DriveApiDataRequest(
- sender,
- base::Bind(&ParseJsonAndRun<AppList>, callback)),
- url_generator_(url_generator) {
- DCHECK(!callback.is_null());
-}
-
-AppsListRequest::~AppsListRequest() {}
-
-GURL AppsListRequest::GetURLInternal() const {
- return url_generator_.GetAppsListUrl();
-}
-
-//========================== ChildrenInsertRequest ============================
-
-ChildrenInsertRequest::ChildrenInsertRequest(
- RequestSender* sender,
- const DriveApiUrlGenerator& url_generator,
- const EntryActionCallback& callback)
- : EntryActionRequest(sender, callback),
- url_generator_(url_generator) {
- DCHECK(!callback.is_null());
-}
-
-ChildrenInsertRequest::~ChildrenInsertRequest() {}
-
-net::URLFetcher::RequestType ChildrenInsertRequest::GetRequestType() const {
- return net::URLFetcher::POST;
-}
-
-GURL ChildrenInsertRequest::GetURL() const {
- return url_generator_.GetChildrenInsertUrl(folder_id_);
-}
-
-bool ChildrenInsertRequest::GetContentData(std::string* upload_content_type,
- std::string* upload_content) {
- *upload_content_type = kContentTypeApplicationJson;
-
- base::DictionaryValue root;
- root.SetString("id", id_);
-
- base::JSONWriter::Write(&root, upload_content);
- DVLOG(1) << "InsertResource data: " << *upload_content_type << ", ["
- << *upload_content << "]";
- return true;
-}
-
-//========================== ChildrenDeleteRequest ============================
-
-ChildrenDeleteRequest::ChildrenDeleteRequest(
- RequestSender* sender,
- const DriveApiUrlGenerator& url_generator,
- const EntryActionCallback& callback)
- : EntryActionRequest(sender, callback),
- url_generator_(url_generator) {
- DCHECK(!callback.is_null());
-}
-
-ChildrenDeleteRequest::~ChildrenDeleteRequest() {}
-
-net::URLFetcher::RequestType ChildrenDeleteRequest::GetRequestType() const {
- return net::URLFetcher::DELETE_REQUEST;
-}
-
-GURL ChildrenDeleteRequest::GetURL() const {
- return url_generator_.GetChildrenDeleteUrl(child_id_, folder_id_);
-}
-
-//======================= InitiateUploadNewFileRequest =======================
-
-InitiateUploadNewFileRequest::InitiateUploadNewFileRequest(
- RequestSender* sender,
- const DriveApiUrlGenerator& url_generator,
- const std::string& content_type,
- int64 content_length,
- const std::string& parent_resource_id,
- const std::string& title,
- const InitiateUploadCallback& callback)
- : InitiateUploadRequestBase(sender,
- callback,
- content_type,
- content_length),
- url_generator_(url_generator),
- parent_resource_id_(parent_resource_id),
- title_(title) {
-}
-
-InitiateUploadNewFileRequest::~InitiateUploadNewFileRequest() {}
-
-GURL InitiateUploadNewFileRequest::GetURL() const {
- return url_generator_.GetInitiateUploadNewFileUrl();
-}
-
-net::URLFetcher::RequestType
-InitiateUploadNewFileRequest::GetRequestType() const {
- return net::URLFetcher::POST;
-}
-
-bool InitiateUploadNewFileRequest::GetContentData(
- std::string* upload_content_type,
- std::string* upload_content) {
- *upload_content_type = kContentTypeApplicationJson;
-
- base::DictionaryValue root;
- root.SetString("title", title_);
-
- // Fill parent link.
- {
- scoped_ptr<base::DictionaryValue> parent(new base::DictionaryValue);
- parent->SetString("kind", kParentLinkKind);
- parent->SetString("id", parent_resource_id_);
-
- scoped_ptr<base::ListValue> parents(new base::ListValue);
- parents->Append(parent.release());
-
- root.Set("parents", parents.release());
- }
-
- base::JSONWriter::Write(&root, upload_content);
-
- DVLOG(1) << "InitiateUploadNewFile data: " << *upload_content_type << ", ["
- << *upload_content << "]";
- return true;
-}
-
-//===================== InitiateUploadExistingFileRequest ====================
-
-InitiateUploadExistingFileRequest::InitiateUploadExistingFileRequest(
- RequestSender* sender,
- const DriveApiUrlGenerator& url_generator,
- const std::string& content_type,
- int64 content_length,
- const std::string& resource_id,
- const std::string& etag,
- const InitiateUploadCallback& callback)
- : InitiateUploadRequestBase(sender,
- callback,
- content_type,
- content_length),
- url_generator_(url_generator),
- resource_id_(resource_id),
- etag_(etag) {
-}
-
-InitiateUploadExistingFileRequest::~InitiateUploadExistingFileRequest() {}
-
-GURL InitiateUploadExistingFileRequest::GetURL() const {
- return url_generator_.GetInitiateUploadExistingFileUrl(resource_id_);
-}
-
-net::URLFetcher::RequestType
-InitiateUploadExistingFileRequest::GetRequestType() const {
- return net::URLFetcher::PUT;
-}
-
-std::vector<std::string>
-InitiateUploadExistingFileRequest::GetExtraRequestHeaders() const {
- std::vector<std::string> headers(
- InitiateUploadRequestBase::GetExtraRequestHeaders());
- headers.push_back(util::GenerateIfMatchHeader(etag_));
- return headers;
-}
-
-//============================ ResumeUploadRequest ===========================
-
-ResumeUploadRequest::ResumeUploadRequest(
- RequestSender* sender,
- const GURL& upload_location,
- int64 start_position,
- int64 end_position,
- int64 content_length,
- const std::string& content_type,
- const base::FilePath& local_file_path,
- const UploadRangeCallback& callback,
- const ProgressCallback& progress_callback)
- : ResumeUploadRequestBase(sender,
- upload_location,
- start_position,
- end_position,
- content_length,
- content_type,
- local_file_path),
- callback_(callback),
- progress_callback_(progress_callback) {
- DCHECK(!callback_.is_null());
-}
-
-ResumeUploadRequest::~ResumeUploadRequest() {}
-
-void ResumeUploadRequest::OnRangeRequestComplete(
- const UploadRangeResponse& response,
- scoped_ptr<base::Value> value) {
- DCHECK(CalledOnValidThread());
- ParseFileResourceWithUploadRangeAndRun(callback_, response, value.Pass());
-}
-
-void ResumeUploadRequest::OnURLFetchUploadProgress(
- const net::URLFetcher* source, int64 current, int64 total) {
- if (!progress_callback_.is_null())
- progress_callback_.Run(current, total);
-}
-
-//========================== GetUploadStatusRequest ==========================
-
-GetUploadStatusRequest::GetUploadStatusRequest(
- RequestSender* sender,
- const GURL& upload_url,
- int64 content_length,
- const UploadRangeCallback& callback)
- : GetUploadStatusRequestBase(sender,
- upload_url,
- content_length),
- callback_(callback) {
- DCHECK(!callback.is_null());
-}
-
-GetUploadStatusRequest::~GetUploadStatusRequest() {}
-
-void GetUploadStatusRequest::OnRangeRequestComplete(
- const UploadRangeResponse& response,
- scoped_ptr<base::Value> value) {
- DCHECK(CalledOnValidThread());
- ParseFileResourceWithUploadRangeAndRun(callback_, response, value.Pass());
-}
-
-//========================== DownloadFileRequest ==========================
-
-DownloadFileRequest::DownloadFileRequest(
- RequestSender* sender,
- const DriveApiUrlGenerator& url_generator,
- const std::string& resource_id,
- const base::FilePath& output_file_path,
- const DownloadActionCallback& download_action_callback,
- const GetContentCallback& get_content_callback,
- const ProgressCallback& progress_callback)
- : DownloadFileRequestBase(
- sender,
- download_action_callback,
- get_content_callback,
- progress_callback,
- url_generator.GenerateDownloadFileUrl(resource_id),
- output_file_path) {
-}
-
-DownloadFileRequest::~DownloadFileRequest() {
-}
-
-} // namespace drive
-} // namespace google_apis
« no previous file with comments | « chrome/browser/google_apis/drive_api_requests.h ('k') | chrome/browser/google_apis/drive_api_requests_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698