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 #ifndef GOOGLE_APIS_DRIVE_DRIVE_API_REQUESTS_H_ | 5 #ifndef GOOGLE_APIS_DRIVE_DRIVE_API_REQUESTS_H_ |
6 #define GOOGLE_APIS_DRIVE_DRIVE_API_REQUESTS_H_ | 6 #define GOOGLE_APIS_DRIVE_DRIVE_API_REQUESTS_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 950 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
961 // UploadRangeRequestBase overrides. | 961 // UploadRangeRequestBase overrides. |
962 void OnRangeRequestComplete(const UploadRangeResponse& response, | 962 void OnRangeRequestComplete(const UploadRangeResponse& response, |
963 scoped_ptr<base::Value> value) override; | 963 scoped_ptr<base::Value> value) override; |
964 | 964 |
965 private: | 965 private: |
966 const UploadRangeCallback callback_; | 966 const UploadRangeCallback callback_; |
967 | 967 |
968 DISALLOW_COPY_AND_ASSIGN(GetUploadStatusRequest); | 968 DISALLOW_COPY_AND_ASSIGN(GetUploadStatusRequest); |
969 }; | 969 }; |
970 | 970 |
971 //======================= MultipartUploadNewFileRequest ======================= | 971 //======================= MultipartUploadNewFileDelegate ======================= |
972 | 972 |
973 // This class performs the request for initiating the upload of a new file. | 973 // This class performs the request for initiating the upload of a new file. |
974 class MultipartUploadNewFileRequest : public MultipartUploadRequestBase { | 974 class MultipartUploadNewFileDelegate : public MultipartUploadRequestBase { |
975 public: | 975 public: |
976 // |parent_resource_id| should be the resource id of the parent directory. | 976 // |parent_resource_id| should be the resource id of the parent directory. |
977 // |title| should be set. | 977 // |title| should be set. |
978 // See also the comments of MultipartUploadRequestBase for more details | 978 // See also the comments of MultipartUploadRequestBase for more details |
979 // about the other parameters. | 979 // about the other parameters. |
980 MultipartUploadNewFileRequest(RequestSender* sender, | 980 MultipartUploadNewFileDelegate(RequestSender* sender, |
981 const std::string& title, | 981 const std::string& title, |
982 const std::string& parent_resource_id, | 982 const std::string& parent_resource_id, |
983 const std::string& content_type, | 983 const std::string& content_type, |
984 int64 content_length, | 984 int64 content_length, |
985 const base::Time& modified_date, | 985 const base::Time& modified_date, |
986 const base::Time& last_viewed_by_me_date, | 986 const base::Time& last_viewed_by_me_date, |
987 const base::FilePath& local_file_path, | 987 const base::FilePath& local_file_path, |
988 const Properties& properties, | 988 const Properties& properties, |
989 const DriveApiUrlGenerator& url_generator, | 989 const DriveApiUrlGenerator& url_generator, |
990 const FileResourceCallback& callback, | 990 const FileResourceCallback& callback, |
991 const ProgressCallback& progress_callback); | 991 const ProgressCallback& progress_callback); |
992 ~MultipartUploadNewFileRequest() override; | 992 ~MultipartUploadNewFileDelegate() override; |
993 | 993 |
994 protected: | 994 protected: |
995 // UrlFetchRequestBase overrides. | 995 // UrlFetchRequestBase overrides. |
996 GURL GetURL() const override; | 996 GURL GetURL() const override; |
997 net::URLFetcher::RequestType GetRequestType() const override; | 997 net::URLFetcher::RequestType GetRequestType() const override; |
998 | 998 |
999 private: | 999 private: |
1000 const bool has_modified_date_; | 1000 const bool has_modified_date_; |
1001 const DriveApiUrlGenerator url_generator_; | 1001 const DriveApiUrlGenerator url_generator_; |
1002 | 1002 |
1003 DISALLOW_COPY_AND_ASSIGN(MultipartUploadNewFileRequest); | 1003 DISALLOW_COPY_AND_ASSIGN(MultipartUploadNewFileDelegate); |
1004 }; | 1004 }; |
1005 | 1005 |
1006 //======================= MultipartUploadExistingFileRequest =================== | 1006 //====================== MultipartUploadExistingFileDelegate =================== |
1007 | 1007 |
1008 // This class performs the request for initiating the upload of a new file. | 1008 // This class performs the request for initiating the upload of a new file. |
1009 class MultipartUploadExistingFileRequest : public MultipartUploadRequestBase { | 1009 class MultipartUploadExistingFileDelegate : public MultipartUploadRequestBase { |
1010 public: | 1010 public: |
1011 // |parent_resource_id| should be the resource id of the parent directory. | 1011 // |parent_resource_id| should be the resource id of the parent directory. |
1012 // |title| should be set. | 1012 // |title| should be set. |
1013 // See also the comments of MultipartUploadRequestBase for more details | 1013 // See also the comments of MultipartUploadRequestBase for more details |
1014 // about the other parameters. | 1014 // about the other parameters. |
1015 MultipartUploadExistingFileRequest(RequestSender* sender, | 1015 MultipartUploadExistingFileDelegate( |
1016 const std::string& title, | 1016 RequestSender* sender, |
1017 const std::string& resource_id, | 1017 const std::string& title, |
1018 const std::string& parent_resource_id, | 1018 const std::string& resource_id, |
1019 const std::string& content_type, | 1019 const std::string& parent_resource_id, |
1020 int64 content_length, | 1020 const std::string& content_type, |
1021 const base::Time& modified_date, | 1021 int64 content_length, |
1022 const base::Time& last_viewed_by_me_date, | 1022 const base::Time& modified_date, |
1023 const base::FilePath& local_file_path, | 1023 const base::Time& last_viewed_by_me_date, |
1024 const std::string& etag, | 1024 const base::FilePath& local_file_path, |
1025 const Properties& properties, | 1025 const std::string& etag, |
1026 const DriveApiUrlGenerator& url_generator, | 1026 const Properties& properties, |
1027 const FileResourceCallback& callback, | 1027 const DriveApiUrlGenerator& url_generator, |
1028 const ProgressCallback& progress_callback); | 1028 const FileResourceCallback& callback, |
1029 ~MultipartUploadExistingFileRequest() override; | 1029 const ProgressCallback& progress_callback); |
| 1030 ~MultipartUploadExistingFileDelegate() override; |
1030 | 1031 |
1031 protected: | 1032 protected: |
1032 // UrlFetchRequestBase overrides. | 1033 // UrlFetchRequestBase overrides. |
1033 std::vector<std::string> GetExtraRequestHeaders() const override; | 1034 std::vector<std::string> GetExtraRequestHeaders() const override; |
1034 GURL GetURL() const override; | 1035 GURL GetURL() const override; |
1035 net::URLFetcher::RequestType GetRequestType() const override; | 1036 net::URLFetcher::RequestType GetRequestType() const override; |
1036 | 1037 |
1037 private: | 1038 private: |
1038 const std::string resource_id_; | 1039 const std::string resource_id_; |
1039 const std::string etag_; | 1040 const std::string etag_; |
1040 const bool has_modified_date_; | 1041 const bool has_modified_date_; |
1041 const DriveApiUrlGenerator url_generator_; | 1042 const DriveApiUrlGenerator url_generator_; |
1042 | 1043 |
1043 DISALLOW_COPY_AND_ASSIGN(MultipartUploadExistingFileRequest); | 1044 DISALLOW_COPY_AND_ASSIGN(MultipartUploadExistingFileDelegate); |
1044 }; | 1045 }; |
1045 | 1046 |
1046 //========================== DownloadFileRequest ========================== | 1047 //========================== DownloadFileRequest ========================== |
1047 | 1048 |
1048 // This class performs the request for downloading of a specified file. | 1049 // This class performs the request for downloading of a specified file. |
1049 class DownloadFileRequest : public DownloadFileRequestBase { | 1050 class DownloadFileRequest : public DownloadFileRequestBase { |
1050 public: | 1051 public: |
1051 // See also DownloadFileRequestBase's comment for parameters meaning. | 1052 // See also DownloadFileRequestBase's comment for parameters meaning. |
1052 DownloadFileRequest(RequestSender* sender, | 1053 DownloadFileRequest(RequestSender* sender, |
1053 const DriveApiUrlGenerator& url_generator, | 1054 const DriveApiUrlGenerator& url_generator, |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1102 private: | 1103 private: |
1103 const DriveApiUrlGenerator url_generator_; | 1104 const DriveApiUrlGenerator url_generator_; |
1104 std::string id_; | 1105 std::string id_; |
1105 PermissionType type_; | 1106 PermissionType type_; |
1106 PermissionRole role_; | 1107 PermissionRole role_; |
1107 std::string value_; | 1108 std::string value_; |
1108 | 1109 |
1109 DISALLOW_COPY_AND_ASSIGN(PermissionsInsertRequest); | 1110 DISALLOW_COPY_AND_ASSIGN(PermissionsInsertRequest); |
1110 }; | 1111 }; |
1111 | 1112 |
| 1113 //======================= SingleBatchableDelegateRequest ======================= |
| 1114 |
| 1115 // Request that is operated by single BatchableDelegate. |
| 1116 class SingleBatchableDelegateRequest : public UrlFetchRequestBase { |
| 1117 public: |
| 1118 // The instance takes ownership of |delegate|. |
| 1119 SingleBatchableDelegateRequest(RequestSender* sender, |
| 1120 BatchableDelegate* delegate); |
| 1121 ~SingleBatchableDelegateRequest() override; |
| 1122 |
| 1123 private: |
| 1124 GURL GetURL() const override; |
| 1125 net::URLFetcher::RequestType GetRequestType() const override; |
| 1126 std::vector<std::string> GetExtraRequestHeaders() const override; |
| 1127 void Prepare(const PrepareCallback& callback) override; |
| 1128 bool GetContentData(std::string* upload_content_type, |
| 1129 std::string* upload_content) override; |
| 1130 void RunCallbackOnPrematureFailure(DriveApiErrorCode code) override; |
| 1131 void ProcessURLFetchResults(const net::URLFetcher* source) override; |
| 1132 void OnURLFetchUploadProgress(const net::URLFetcher* source, |
| 1133 int64 current, |
| 1134 int64 total) override; |
| 1135 scoped_ptr<BatchableDelegate> delegate_; |
| 1136 |
| 1137 // Note: This should remain the last member so it'll be destroyed and |
| 1138 // invalidate its weak pointers before any other members are destroyed. |
| 1139 base::WeakPtrFactory<SingleBatchableDelegateRequest> weak_ptr_factory_; |
| 1140 |
| 1141 DISALLOW_COPY_AND_ASSIGN(SingleBatchableDelegateRequest); |
| 1142 }; |
| 1143 |
1112 //========================== BatchUploadRequest ========================== | 1144 //========================== BatchUploadRequest ========================== |
1113 | 1145 |
1114 struct BatchUploadChildEntry { | 1146 class BatchUploadChildEntry { |
1115 BatchUploadChildEntry() : request(NULL), prepared(false) {} | 1147 public: |
1116 explicit BatchUploadChildEntry(BatchableRequestBase* request) | 1148 explicit BatchUploadChildEntry(BatchableDelegate* request); |
1117 : request(request), prepared(false), data_offset(0), data_size(0) {} | 1149 ~BatchUploadChildEntry(); |
1118 BatchableRequestBase* request; | 1150 scoped_ptr<BatchableDelegate> request; |
1119 bool prepared; | 1151 bool prepared; |
1120 int64 data_offset; | 1152 int64 data_offset; |
1121 int64 data_size; | 1153 int64 data_size; |
| 1154 |
| 1155 private: |
| 1156 DISALLOW_COPY_AND_ASSIGN(BatchUploadChildEntry); |
1122 }; | 1157 }; |
1123 | 1158 |
1124 class BatchUploadRequest : public UrlFetchRequestBase { | 1159 class BatchUploadRequest : public UrlFetchRequestBase { |
1125 public: | 1160 public: |
1126 BatchUploadRequest(RequestSender* sender, | 1161 BatchUploadRequest(RequestSender* sender, |
1127 const DriveApiUrlGenerator& url_generator); | 1162 const DriveApiUrlGenerator& url_generator); |
1128 ~BatchUploadRequest() override; | 1163 ~BatchUploadRequest() override; |
1129 | 1164 |
1130 // Adds request to the batch request. | 1165 // Adds request to the batch request. The instance takes ownership of |
1131 void AddRequest(BatchableRequestBase* request); | 1166 // |request|. |
| 1167 void AddRequest(BatchableDelegate* request); |
1132 | 1168 |
1133 // Completes building batch upload request, and starts to send the request to | 1169 // Completes building batch upload request, and starts to send the request to |
1134 // server. Must add at least one request before calling |Commit|. | 1170 // server. Must add at least one request before calling |Commit|. |
1135 void Commit(); | 1171 void Commit(); |
1136 | 1172 |
1137 // Obtains weak pointer of this. | 1173 // Obtains weak pointer of this. |
1138 base::WeakPtr<BatchUploadRequest> GetWeakPtrAsBatchUploadRequest(); | 1174 base::WeakPtr<BatchUploadRequest> GetWeakPtrAsBatchUploadRequest(); |
1139 | 1175 |
1140 // Set boundary. Only tests can use this method. | 1176 // Set boundary. Only tests can use this method. |
1141 void SetBoundaryForTesting(const std::string& boundary); | 1177 void SetBoundaryForTesting(const std::string& boundary); |
(...skipping 17 matching lines...) Expand all Loading... |
1159 | 1195 |
1160 // content::UrlFetcherDelegate overrides. | 1196 // content::UrlFetcherDelegate overrides. |
1161 void OnURLFetchUploadProgress(const net::URLFetcher* source, | 1197 void OnURLFetchUploadProgress(const net::URLFetcher* source, |
1162 int64 current, | 1198 int64 current, |
1163 int64 total) override; | 1199 int64 total) override; |
1164 | 1200 |
1165 private: | 1201 private: |
1166 typedef void* RequestID; | 1202 typedef void* RequestID; |
1167 // Obtains corresponding child entry of |request_id|. Returns NULL if the | 1203 // Obtains corresponding child entry of |request_id|. Returns NULL if the |
1168 // entry is not found. | 1204 // entry is not found. |
1169 std::vector<BatchUploadChildEntry>::iterator GetChildEntry( | 1205 ScopedVector<BatchUploadChildEntry>::iterator GetChildEntry( |
1170 RequestID request_id); | 1206 RequestID request_id); |
1171 | 1207 |
1172 // Called after child requests' |Prepare| method. | 1208 // Called after child requests' |Prepare| method. |
1173 void OnChildRequestPrepared(RequestID request_id, DriveApiErrorCode result); | 1209 void OnChildRequestPrepared(RequestID request_id, DriveApiErrorCode result); |
1174 | 1210 |
1175 // Complete |Prepare| if possible. | 1211 // Complete |Prepare| if possible. |
1176 void MayCompletePrepare(); | 1212 void MayCompletePrepare(); |
1177 | 1213 |
1178 // Process result for each child. | 1214 // Process result for each child. |
1179 void ProcessURLFetchResultsForChild(RequestID id, const std::string& body); | 1215 void ProcessURLFetchResultsForChild(RequestID id, const std::string& body); |
1180 | 1216 |
1181 RequestSender* const sender_; | 1217 RequestSender* const sender_; |
1182 const DriveApiUrlGenerator url_generator_; | 1218 const DriveApiUrlGenerator url_generator_; |
1183 std::vector<BatchUploadChildEntry> child_requests_; | 1219 ScopedVector<BatchUploadChildEntry> child_requests_; |
1184 | 1220 |
1185 PrepareCallback prepare_callback_; | 1221 PrepareCallback prepare_callback_; |
1186 bool committed_; | 1222 bool committed_; |
1187 | 1223 |
1188 // Boundary of multipart body. | 1224 // Boundary of multipart body. |
1189 std::string boundary_; | 1225 std::string boundary_; |
1190 | 1226 |
1191 // Multipart of child requests. | 1227 // Multipart of child requests. |
1192 ContentTypeAndData upload_content_; | 1228 ContentTypeAndData upload_content_; |
1193 | 1229 |
1194 // Last reported progress value. | 1230 // Last reported progress value. |
1195 int64 last_progress_value_; | 1231 int64 last_progress_value_; |
1196 | 1232 |
1197 // Note: This should remain the last member so it'll be destroyed and | 1233 // Note: This should remain the last member so it'll be destroyed and |
1198 // invalidate its weak pointers before any other members are destroyed. | 1234 // invalidate its weak pointers before any other members are destroyed. |
1199 base::WeakPtrFactory<BatchUploadRequest> weak_ptr_factory_; | 1235 base::WeakPtrFactory<BatchUploadRequest> weak_ptr_factory_; |
1200 | 1236 |
1201 DISALLOW_COPY_AND_ASSIGN(BatchUploadRequest); | 1237 DISALLOW_COPY_AND_ASSIGN(BatchUploadRequest); |
1202 }; | 1238 }; |
1203 | 1239 |
1204 } // namespace drive | 1240 } // namespace drive |
1205 } // namespace google_apis | 1241 } // namespace google_apis |
1206 | 1242 |
1207 #endif // GOOGLE_APIS_DRIVE_DRIVE_API_REQUESTS_H_ | 1243 #endif // GOOGLE_APIS_DRIVE_DRIVE_API_REQUESTS_H_ |
OLD | NEW |