| 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 "google_apis/drive/base_requests.h" | 5 #include "google_apis/drive/base_requests.h" |
| 6 | 6 |
| 7 #include "base/files/file_util.h" | 7 #include "base/files/file_util.h" |
| 8 #include "base/json/json_reader.h" | 8 #include "base/json/json_reader.h" |
| 9 #include "base/json/json_writer.h" | 9 #include "base/json/json_writer.h" |
| 10 #include "base/location.h" | 10 #include "base/location.h" |
| (...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 145 return code; | 145 return code; |
| 146 | 146 |
| 147 DVLOG(1) << error_body; | 147 DVLOG(1) << error_body; |
| 148 const char kErrorKey[] = "error"; | 148 const char kErrorKey[] = "error"; |
| 149 const char kErrorErrorsKey[] = "errors"; | 149 const char kErrorErrorsKey[] = "errors"; |
| 150 const char kErrorReasonKey[] = "reason"; | 150 const char kErrorReasonKey[] = "reason"; |
| 151 const char kErrorMessageKey[] = "message"; | 151 const char kErrorMessageKey[] = "message"; |
| 152 const char kErrorReasonRateLimitExceeded[] = "rateLimitExceeded"; | 152 const char kErrorReasonRateLimitExceeded[] = "rateLimitExceeded"; |
| 153 const char kErrorReasonUserRateLimitExceeded[] = "userRateLimitExceeded"; | 153 const char kErrorReasonUserRateLimitExceeded[] = "userRateLimitExceeded"; |
| 154 const char kErrorReasonQuotaExceeded[] = "quotaExceeded"; | 154 const char kErrorReasonQuotaExceeded[] = "quotaExceeded"; |
| 155 const char kErrorReasonResponseTooLarge[] = "responseTooLarge"; |
| 155 | 156 |
| 156 scoped_ptr<const base::Value> value(google_apis::ParseJson(error_body)); | 157 scoped_ptr<const base::Value> value(google_apis::ParseJson(error_body)); |
| 157 const base::DictionaryValue* dictionary = NULL; | 158 const base::DictionaryValue* dictionary = NULL; |
| 158 const base::DictionaryValue* error = NULL; | 159 const base::DictionaryValue* error = NULL; |
| 159 if (value && | 160 if (value && |
| 160 value->GetAsDictionary(&dictionary) && | 161 value->GetAsDictionary(&dictionary) && |
| 161 dictionary->GetDictionaryWithoutPathExpansion(kErrorKey, &error)) { | 162 dictionary->GetDictionaryWithoutPathExpansion(kErrorKey, &error)) { |
| 162 // Get error message. | 163 // Get error message. |
| 163 std::string message; | 164 std::string message; |
| 164 error->GetStringWithoutPathExpansion(kErrorMessageKey, &message); | 165 error->GetStringWithoutPathExpansion(kErrorMessageKey, &message); |
| 165 DLOG(ERROR) << "code: " << code << ", message: " << message; | 166 DLOG(ERROR) << "code: " << code << ", message: " << message; |
| 166 | 167 |
| 167 // Override the error code based on the reason of the first error. | 168 // Override the error code based on the reason of the first error. |
| 168 const base::ListValue* errors = NULL; | 169 const base::ListValue* errors = NULL; |
| 169 const base::DictionaryValue* first_error = NULL; | 170 const base::DictionaryValue* first_error = NULL; |
| 170 if (error->GetListWithoutPathExpansion(kErrorErrorsKey, &errors) && | 171 if (error->GetListWithoutPathExpansion(kErrorErrorsKey, &errors) && |
| 171 errors->GetDictionary(0, &first_error)) { | 172 errors->GetDictionary(0, &first_error)) { |
| 172 std::string reason; | 173 std::string reason; |
| 173 first_error->GetStringWithoutPathExpansion(kErrorReasonKey, &reason); | 174 first_error->GetStringWithoutPathExpansion(kErrorReasonKey, &reason); |
| 174 if (reason == kErrorReasonRateLimitExceeded || | 175 if (reason == kErrorReasonRateLimitExceeded || |
| 175 reason == kErrorReasonUserRateLimitExceeded) { | 176 reason == kErrorReasonUserRateLimitExceeded) { |
| 176 return google_apis::HTTP_SERVICE_UNAVAILABLE; | 177 return google_apis::HTTP_SERVICE_UNAVAILABLE; |
| 177 } | 178 } |
| 178 if (reason == kErrorReasonQuotaExceeded) | 179 if (reason == kErrorReasonQuotaExceeded) |
| 179 return google_apis::DRIVE_NO_SPACE; | 180 return google_apis::DRIVE_NO_SPACE; |
| 181 if (reason == kErrorReasonResponseTooLarge) |
| 182 return google_apis::DRIVE_RESPONSE_TOO_LARGE; |
| 180 } | 183 } |
| 181 } | 184 } |
| 182 | 185 |
| 183 return code; | 186 return code; |
| 184 } | 187 } |
| 185 | 188 |
| 186 } // namespace | 189 } // namespace |
| 187 | 190 |
| 188 namespace google_apis { | 191 namespace google_apis { |
| 189 | 192 |
| (...skipping 820 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1010 download_action_callback_.Run(code, temp_file); | 1013 download_action_callback_.Run(code, temp_file); |
| 1011 OnProcessURLFetchResultsComplete(); | 1014 OnProcessURLFetchResultsComplete(); |
| 1012 } | 1015 } |
| 1013 | 1016 |
| 1014 void DownloadFileRequestBase::RunCallbackOnPrematureFailure( | 1017 void DownloadFileRequestBase::RunCallbackOnPrematureFailure( |
| 1015 DriveApiErrorCode code) { | 1018 DriveApiErrorCode code) { |
| 1016 download_action_callback_.Run(code, base::FilePath()); | 1019 download_action_callback_.Run(code, base::FilePath()); |
| 1017 } | 1020 } |
| 1018 | 1021 |
| 1019 } // namespace google_apis | 1022 } // namespace google_apis |
| OLD | NEW |