| 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 // This file provides base classes used to issue HTTP requests for Google | 5 // This file provides base classes used to issue HTTP requests for Google |
| 6 // APIs. | 6 // APIs. |
| 7 | 7 |
| 8 #ifndef CHROME_BROWSER_GOOGLE_APIS_BASE_REQUESTS_H_ | 8 #ifndef CHROME_BROWSER_GOOGLE_APIS_BASE_REQUESTS_H_ |
| 9 #define CHROME_BROWSER_GOOGLE_APIS_BASE_REQUESTS_H_ | 9 #define CHROME_BROWSER_GOOGLE_APIS_BASE_REQUESTS_H_ |
| 10 | 10 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 28 | 28 |
| 29 class RequestSender; | 29 class RequestSender; |
| 30 | 30 |
| 31 // Callback used to pass parsed JSON from ParseJson(). If parsing error occurs, | 31 // Callback used to pass parsed JSON from ParseJson(). If parsing error occurs, |
| 32 // then the passed argument is null. | 32 // then the passed argument is null. |
| 33 typedef base::Callback<void(scoped_ptr<base::Value> value)> ParseJsonCallback; | 33 typedef base::Callback<void(scoped_ptr<base::Value> value)> ParseJsonCallback; |
| 34 | 34 |
| 35 // Callback used for DownloadFileRequest and ResumeUploadRequestBase. | 35 // Callback used for DownloadFileRequest and ResumeUploadRequestBase. |
| 36 typedef base::Callback<void(int64 progress, int64 total)> ProgressCallback; | 36 typedef base::Callback<void(int64 progress, int64 total)> ProgressCallback; |
| 37 | 37 |
| 38 // Parses JSON passed in |json| on blocking pool. Runs |callback| on the calling | 38 // Parses JSON passed in |json| on |blocking_task_runner|. Runs |callback| on |
| 39 // thread when finished with either success or failure. | 39 // the calling thread when finished with either success or failure. |
| 40 // The callback must not be null. | 40 // The callback must not be null. |
| 41 void ParseJson(const std::string& json, const ParseJsonCallback& callback); | 41 void ParseJson(base::TaskRunner* blocking_task_runner, |
| 42 const std::string& json, |
| 43 const ParseJsonCallback& callback); |
| 42 | 44 |
| 43 //======================= AuthenticatedRequestInterface ====================== | 45 //======================= AuthenticatedRequestInterface ====================== |
| 44 | 46 |
| 45 // An interface class for implementing a request which requires OAuth2 | 47 // An interface class for implementing a request which requires OAuth2 |
| 46 // authentication. | 48 // authentication. |
| 47 class AuthenticatedRequestInterface { | 49 class AuthenticatedRequestInterface { |
| 48 public: | 50 public: |
| 49 // Called when re-authentication is required. See Start() for details. | 51 // Called when re-authentication is required. See Start() for details. |
| 50 typedef base::Callback<void(AuthenticatedRequestInterface* request)> | 52 typedef base::Callback<void(AuthenticatedRequestInterface* request)> |
| 51 ReAuthenticateCallback; | 53 ReAuthenticateCallback; |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 139 // Invoked when ProcessURLFetchResults() is completed. | 141 // Invoked when ProcessURLFetchResults() is completed. |
| 140 void OnProcessURLFetchResultsComplete(bool result); | 142 void OnProcessURLFetchResultsComplete(bool result); |
| 141 | 143 |
| 142 // Returns an appropriate GDataErrorCode based on the HTTP response code and | 144 // Returns an appropriate GDataErrorCode based on the HTTP response code and |
| 143 // the status of the URLFetcher. | 145 // the status of the URLFetcher. |
| 144 static GDataErrorCode GetErrorCode(const net::URLFetcher* source); | 146 static GDataErrorCode GetErrorCode(const net::URLFetcher* source); |
| 145 | 147 |
| 146 // Returns true if called on the thread where the constructor was called. | 148 // Returns true if called on the thread where the constructor was called. |
| 147 bool CalledOnValidThread(); | 149 bool CalledOnValidThread(); |
| 148 | 150 |
| 151 // Returns the task runner that should be used for blocking tasks. |
| 152 base::TaskRunner* blocking_task_runner() const; |
| 153 |
| 149 private: | 154 private: |
| 150 // URLFetcherDelegate overrides. | 155 // URLFetcherDelegate overrides. |
| 151 virtual void OnURLFetchComplete(const net::URLFetcher* source) OVERRIDE; | 156 virtual void OnURLFetchComplete(const net::URLFetcher* source) OVERRIDE; |
| 152 | 157 |
| 153 // AuthenticatedRequestInterface overrides. | 158 // AuthenticatedRequestInterface overrides. |
| 154 virtual void OnAuthFailed(GDataErrorCode code) OVERRIDE; | 159 virtual void OnAuthFailed(GDataErrorCode code) OVERRIDE; |
| 155 | 160 |
| 156 ReAuthenticateCallback re_authenticate_callback_; | 161 ReAuthenticateCallback re_authenticate_callback_; |
| 157 int re_authenticate_count_; | 162 int re_authenticate_count_; |
| 158 scoped_ptr<net::URLFetcher> url_fetcher_; | 163 scoped_ptr<net::URLFetcher> url_fetcher_; |
| (...skipping 10 matching lines...) Expand all Loading... |
| 169 | 174 |
| 170 //============================ EntryActionRequest ============================ | 175 //============================ EntryActionRequest ============================ |
| 171 | 176 |
| 172 // Callback type for Delete/Move DocumentServiceInterface calls. | 177 // Callback type for Delete/Move DocumentServiceInterface calls. |
| 173 typedef base::Callback<void(GDataErrorCode error)> EntryActionCallback; | 178 typedef base::Callback<void(GDataErrorCode error)> EntryActionCallback; |
| 174 | 179 |
| 175 // This class performs a simple action over a given entry (document/file). | 180 // This class performs a simple action over a given entry (document/file). |
| 176 // It is meant to be used for requests that return no JSON blobs. | 181 // It is meant to be used for requests that return no JSON blobs. |
| 177 class EntryActionRequest : public UrlFetchRequestBase { | 182 class EntryActionRequest : public UrlFetchRequestBase { |
| 178 public: | 183 public: |
| 179 // |url_request_context_getter| is used to initialize URLFetcher. | 184 // |callback| is called when the request is finished either by success or by |
| 180 // |callback| must not be null. | 185 // failure. It must not be null. |
| 181 EntryActionRequest(RequestSender* sender, | 186 EntryActionRequest(RequestSender* sender, |
| 182 const EntryActionCallback& callback); | 187 const EntryActionCallback& callback); |
| 183 virtual ~EntryActionRequest(); | 188 virtual ~EntryActionRequest(); |
| 184 | 189 |
| 185 protected: | 190 protected: |
| 186 // Overridden from UrlFetchRequestBase. | 191 // Overridden from UrlFetchRequestBase. |
| 187 virtual void ProcessURLFetchResults(const net::URLFetcher* source) OVERRIDE; | 192 virtual void ProcessURLFetchResults(const net::URLFetcher* source) OVERRIDE; |
| 188 virtual void RunCallbackOnPrematureFailure(GDataErrorCode code) OVERRIDE; | 193 virtual void RunCallbackOnPrematureFailure(GDataErrorCode code) OVERRIDE; |
| 189 | 194 |
| 190 private: | 195 private: |
| 191 const EntryActionCallback callback_; | 196 const EntryActionCallback callback_; |
| 192 | 197 |
| 193 DISALLOW_COPY_AND_ASSIGN(EntryActionRequest); | 198 DISALLOW_COPY_AND_ASSIGN(EntryActionRequest); |
| 194 }; | 199 }; |
| 195 | 200 |
| 196 //============================== GetDataRequest ============================== | 201 //============================== GetDataRequest ============================== |
| 197 | 202 |
| 198 // Callback type for DocumentServiceInterface::GetResourceList. | 203 // Callback type for DocumentServiceInterface::GetResourceList. |
| 199 // Note: json_data argument should be passed using base::Passed(&json_data), not | 204 // Note: json_data argument should be passed using base::Passed(&json_data), not |
| 200 // json_data.Pass(). | 205 // json_data.Pass(). |
| 201 typedef base::Callback<void(GDataErrorCode error, | 206 typedef base::Callback<void(GDataErrorCode error, |
| 202 scoped_ptr<base::Value> json_data)> GetDataCallback; | 207 scoped_ptr<base::Value> json_data)> GetDataCallback; |
| 203 | 208 |
| 204 // This class performs the request for fetching and converting the fetched | 209 // This class performs the request for fetching and converting the fetched |
| 205 // content into a base::Value. | 210 // content into a base::Value. |
| 206 class GetDataRequest : public UrlFetchRequestBase { | 211 class GetDataRequest : public UrlFetchRequestBase { |
| 207 public: | 212 public: |
| 208 // |callback| must not be null. | 213 // |callback| is called when the request finishes either by success or by |
| 214 // failure. On success, a JSON Value object is passed. It must not be null. |
| 209 GetDataRequest(RequestSender* sender, const GetDataCallback& callback); | 215 GetDataRequest(RequestSender* sender, const GetDataCallback& callback); |
| 210 virtual ~GetDataRequest(); | 216 virtual ~GetDataRequest(); |
| 211 | 217 |
| 212 // Parses JSON response. | 218 // Parses JSON response. |
| 213 void ParseResponse(GDataErrorCode fetch_error_code, const std::string& data); | 219 void ParseResponse(GDataErrorCode fetch_error_code, const std::string& data); |
| 214 | 220 |
| 215 protected: | 221 protected: |
| 216 // UrlFetchRequestBase overrides. | 222 // UrlFetchRequestBase overrides. |
| 217 virtual void ProcessURLFetchResults(const net::URLFetcher* source) OVERRIDE; | 223 virtual void ProcessURLFetchResults(const net::URLFetcher* source) OVERRIDE; |
| 218 virtual void RunCallbackOnPrematureFailure( | 224 virtual void RunCallbackOnPrematureFailure( |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 251 // | 257 // |
| 252 // Here's the flow of uploading: | 258 // Here's the flow of uploading: |
| 253 // 1) Get the upload URL with a class inheriting InitiateUploadRequestBase. | 259 // 1) Get the upload URL with a class inheriting InitiateUploadRequestBase. |
| 254 // 2) Upload the first 512KB (see kUploadChunkSize in drive_uploader.cc) | 260 // 2) Upload the first 512KB (see kUploadChunkSize in drive_uploader.cc) |
| 255 // of the target file to the upload URL | 261 // of the target file to the upload URL |
| 256 // 3) If there is more data to upload, go to 2). | 262 // 3) If there is more data to upload, go to 2). |
| 257 // | 263 // |
| 258 class InitiateUploadRequestBase : public UrlFetchRequestBase { | 264 class InitiateUploadRequestBase : public UrlFetchRequestBase { |
| 259 protected: | 265 protected: |
| 260 // |callback| will be called with the upload URL, where upload data is | 266 // |callback| will be called with the upload URL, where upload data is |
| 261 // uploaded to with ResumeUploadRequestBase. | 267 // uploaded to with ResumeUploadRequestBase. It must not be null. |
| 262 // |callback| must not be null. | |
| 263 // |content_type| and |content_length| should be the attributes of the | 268 // |content_type| and |content_length| should be the attributes of the |
| 264 // uploading file. | 269 // uploading file. |
| 265 InitiateUploadRequestBase(RequestSender* sender, | 270 InitiateUploadRequestBase(RequestSender* sender, |
| 266 const InitiateUploadCallback& callback, | 271 const InitiateUploadCallback& callback, |
| 267 const std::string& content_type, | 272 const std::string& content_type, |
| 268 int64 content_length); | 273 int64 content_length); |
| 269 virtual ~InitiateUploadRequestBase(); | 274 virtual ~InitiateUploadRequestBase(); |
| 270 | 275 |
| 271 // UrlFetchRequestBase overrides. | 276 // UrlFetchRequestBase overrides. |
| 272 virtual void ProcessURLFetchResults(const net::URLFetcher* source) OVERRIDE; | 277 virtual void ProcessURLFetchResults(const net::URLFetcher* source) OVERRIDE; |
| (...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 488 const ProgressCallback progress_callback_; | 493 const ProgressCallback progress_callback_; |
| 489 const GURL download_url_; | 494 const GURL download_url_; |
| 490 const base::FilePath output_file_path_; | 495 const base::FilePath output_file_path_; |
| 491 | 496 |
| 492 DISALLOW_COPY_AND_ASSIGN(DownloadFileRequestBase); | 497 DISALLOW_COPY_AND_ASSIGN(DownloadFileRequestBase); |
| 493 }; | 498 }; |
| 494 | 499 |
| 495 } // namespace google_apis | 500 } // namespace google_apis |
| 496 | 501 |
| 497 #endif // CHROME_BROWSER_GOOGLE_APIS_BASE_REQUESTS_H_ | 502 #endif // CHROME_BROWSER_GOOGLE_APIS_BASE_REQUESTS_H_ |
| OLD | NEW |