1 // Copyright 2019 Google LLC 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 #include "google/cloud/storage/internal/hybrid_client.h" 16 17 namespace google { 18 namespace cloud { 19 namespace storage { 20 inline namespace STORAGE_CLIENT_NS { 21 namespace internal { 22 HybridClient(ClientOptions options)23HybridClient::HybridClient(ClientOptions options) 24 : grpc_(std::make_shared<GrpcClient>(options)), 25 curl_(CurlClient::Create(std::move(options))) {} 26 client_options() const27ClientOptions const& HybridClient::client_options() const { 28 return curl_->client_options(); 29 } 30 ListBuckets(ListBucketsRequest const & request)31StatusOr<ListBucketsResponse> HybridClient::ListBuckets( 32 ListBucketsRequest const& request) { 33 return curl_->ListBuckets(request); 34 } 35 CreateBucket(CreateBucketRequest const & request)36StatusOr<BucketMetadata> HybridClient::CreateBucket( 37 CreateBucketRequest const& request) { 38 return curl_->CreateBucket(request); 39 } 40 GetBucketMetadata(GetBucketMetadataRequest const & request)41StatusOr<BucketMetadata> HybridClient::GetBucketMetadata( 42 GetBucketMetadataRequest const& request) { 43 return curl_->GetBucketMetadata(request); 44 } 45 DeleteBucket(DeleteBucketRequest const & request)46StatusOr<EmptyResponse> HybridClient::DeleteBucket( 47 DeleteBucketRequest const& request) { 48 return curl_->DeleteBucket(request); 49 } 50 UpdateBucket(UpdateBucketRequest const & request)51StatusOr<BucketMetadata> HybridClient::UpdateBucket( 52 UpdateBucketRequest const& request) { 53 return curl_->UpdateBucket(request); 54 } 55 PatchBucket(PatchBucketRequest const & request)56StatusOr<BucketMetadata> HybridClient::PatchBucket( 57 PatchBucketRequest const& request) { 58 return curl_->PatchBucket(request); 59 } 60 GetBucketIamPolicy(GetBucketIamPolicyRequest const & request)61StatusOr<IamPolicy> HybridClient::GetBucketIamPolicy( 62 GetBucketIamPolicyRequest const& request) { 63 return curl_->GetBucketIamPolicy(request); 64 } 65 GetNativeBucketIamPolicy(GetBucketIamPolicyRequest const & request)66StatusOr<NativeIamPolicy> HybridClient::GetNativeBucketIamPolicy( 67 GetBucketIamPolicyRequest const& request) { 68 return curl_->GetNativeBucketIamPolicy(request); 69 } 70 SetBucketIamPolicy(SetBucketIamPolicyRequest const & request)71StatusOr<IamPolicy> HybridClient::SetBucketIamPolicy( 72 SetBucketIamPolicyRequest const& request) { 73 return curl_->SetBucketIamPolicy(request); 74 } 75 SetNativeBucketIamPolicy(SetNativeBucketIamPolicyRequest const & request)76StatusOr<NativeIamPolicy> HybridClient::SetNativeBucketIamPolicy( 77 SetNativeBucketIamPolicyRequest const& request) { 78 return curl_->SetNativeBucketIamPolicy(request); 79 } 80 81 StatusOr<TestBucketIamPermissionsResponse> TestBucketIamPermissions(TestBucketIamPermissionsRequest const & request)82HybridClient::TestBucketIamPermissions( 83 TestBucketIamPermissionsRequest const& request) { 84 return curl_->TestBucketIamPermissions(request); 85 } 86 LockBucketRetentionPolicy(LockBucketRetentionPolicyRequest const & request)87StatusOr<BucketMetadata> HybridClient::LockBucketRetentionPolicy( 88 LockBucketRetentionPolicyRequest const& request) { 89 return curl_->LockBucketRetentionPolicy(request); 90 } 91 InsertObjectMedia(InsertObjectMediaRequest const & request)92StatusOr<ObjectMetadata> HybridClient::InsertObjectMedia( 93 InsertObjectMediaRequest const& request) { 94 return grpc_->InsertObjectMedia(request); 95 } 96 CopyObject(CopyObjectRequest const & request)97StatusOr<ObjectMetadata> HybridClient::CopyObject( 98 CopyObjectRequest const& request) { 99 return curl_->CopyObject(request); 100 } 101 GetObjectMetadata(GetObjectMetadataRequest const & request)102StatusOr<ObjectMetadata> HybridClient::GetObjectMetadata( 103 GetObjectMetadataRequest const& request) { 104 return curl_->GetObjectMetadata(request); 105 } 106 ReadObject(ReadObjectRangeRequest const & request)107StatusOr<std::unique_ptr<ObjectReadSource>> HybridClient::ReadObject( 108 ReadObjectRangeRequest const& request) { 109 return grpc_->ReadObject(request); 110 } 111 ListObjects(ListObjectsRequest const & request)112StatusOr<ListObjectsResponse> HybridClient::ListObjects( 113 ListObjectsRequest const& request) { 114 return curl_->ListObjects(request); 115 } 116 DeleteObject(DeleteObjectRequest const & request)117StatusOr<EmptyResponse> HybridClient::DeleteObject( 118 DeleteObjectRequest const& request) { 119 return curl_->DeleteObject(request); 120 } 121 UpdateObject(UpdateObjectRequest const & request)122StatusOr<ObjectMetadata> HybridClient::UpdateObject( 123 UpdateObjectRequest const& request) { 124 return curl_->UpdateObject(request); 125 } 126 PatchObject(PatchObjectRequest const & request)127StatusOr<ObjectMetadata> HybridClient::PatchObject( 128 PatchObjectRequest const& request) { 129 return curl_->PatchObject(request); 130 } 131 ComposeObject(ComposeObjectRequest const & request)132StatusOr<ObjectMetadata> HybridClient::ComposeObject( 133 ComposeObjectRequest const& request) { 134 return curl_->ComposeObject(request); 135 } 136 RewriteObject(RewriteObjectRequest const & request)137StatusOr<RewriteObjectResponse> HybridClient::RewriteObject( 138 RewriteObjectRequest const& request) { 139 return curl_->RewriteObject(request); 140 } 141 142 StatusOr<std::unique_ptr<ResumableUploadSession>> CreateResumableSession(ResumableUploadRequest const & request)143HybridClient::CreateResumableSession(ResumableUploadRequest const& request) { 144 return grpc_->CreateResumableSession(request); 145 } 146 147 StatusOr<std::unique_ptr<ResumableUploadSession>> RestoreResumableSession(std::string const & upload_id)148HybridClient::RestoreResumableSession(std::string const& upload_id) { 149 return grpc_->RestoreResumableSession(upload_id); 150 } 151 DeleteResumableUpload(DeleteResumableUploadRequest const & request)152StatusOr<EmptyResponse> HybridClient::DeleteResumableUpload( 153 DeleteResumableUploadRequest const& request) { 154 return curl_->DeleteResumableUpload(request); 155 } 156 ListBucketAcl(ListBucketAclRequest const & request)157StatusOr<ListBucketAclResponse> HybridClient::ListBucketAcl( 158 ListBucketAclRequest const& request) { 159 return curl_->ListBucketAcl(request); 160 } 161 CreateBucketAcl(CreateBucketAclRequest const & request)162StatusOr<BucketAccessControl> HybridClient::CreateBucketAcl( 163 CreateBucketAclRequest const& request) { 164 return curl_->CreateBucketAcl(request); 165 } 166 DeleteBucketAcl(DeleteBucketAclRequest const & request)167StatusOr<EmptyResponse> HybridClient::DeleteBucketAcl( 168 DeleteBucketAclRequest const& request) { 169 return curl_->DeleteBucketAcl(request); 170 } 171 GetBucketAcl(GetBucketAclRequest const & request)172StatusOr<BucketAccessControl> HybridClient::GetBucketAcl( 173 GetBucketAclRequest const& request) { 174 return curl_->GetBucketAcl(request); 175 } 176 UpdateBucketAcl(UpdateBucketAclRequest const & request)177StatusOr<BucketAccessControl> HybridClient::UpdateBucketAcl( 178 UpdateBucketAclRequest const& request) { 179 return curl_->UpdateBucketAcl(request); 180 } 181 PatchBucketAcl(PatchBucketAclRequest const & request)182StatusOr<BucketAccessControl> HybridClient::PatchBucketAcl( 183 PatchBucketAclRequest const& request) { 184 return curl_->PatchBucketAcl(request); 185 } 186 ListObjectAcl(ListObjectAclRequest const & request)187StatusOr<ListObjectAclResponse> HybridClient::ListObjectAcl( 188 ListObjectAclRequest const& request) { 189 return curl_->ListObjectAcl(request); 190 } 191 CreateObjectAcl(CreateObjectAclRequest const & request)192StatusOr<ObjectAccessControl> HybridClient::CreateObjectAcl( 193 CreateObjectAclRequest const& request) { 194 return curl_->CreateObjectAcl(request); 195 } 196 DeleteObjectAcl(DeleteObjectAclRequest const & request)197StatusOr<EmptyResponse> HybridClient::DeleteObjectAcl( 198 DeleteObjectAclRequest const& request) { 199 return curl_->DeleteObjectAcl(request); 200 } 201 GetObjectAcl(GetObjectAclRequest const & request)202StatusOr<ObjectAccessControl> HybridClient::GetObjectAcl( 203 GetObjectAclRequest const& request) { 204 return curl_->GetObjectAcl(request); 205 } 206 UpdateObjectAcl(UpdateObjectAclRequest const & request)207StatusOr<ObjectAccessControl> HybridClient::UpdateObjectAcl( 208 UpdateObjectAclRequest const& request) { 209 return curl_->UpdateObjectAcl(request); 210 } 211 PatchObjectAcl(PatchObjectAclRequest const & request)212StatusOr<ObjectAccessControl> HybridClient::PatchObjectAcl( 213 PatchObjectAclRequest const& request) { 214 return curl_->PatchObjectAcl(request); 215 } 216 ListDefaultObjectAcl(ListDefaultObjectAclRequest const & request)217StatusOr<ListDefaultObjectAclResponse> HybridClient::ListDefaultObjectAcl( 218 ListDefaultObjectAclRequest const& request) { 219 return curl_->ListDefaultObjectAcl(request); 220 } 221 CreateDefaultObjectAcl(CreateDefaultObjectAclRequest const & request)222StatusOr<ObjectAccessControl> HybridClient::CreateDefaultObjectAcl( 223 CreateDefaultObjectAclRequest const& request) { 224 return curl_->CreateDefaultObjectAcl(request); 225 } 226 DeleteDefaultObjectAcl(DeleteDefaultObjectAclRequest const & request)227StatusOr<EmptyResponse> HybridClient::DeleteDefaultObjectAcl( 228 DeleteDefaultObjectAclRequest const& request) { 229 return curl_->DeleteDefaultObjectAcl(request); 230 } 231 GetDefaultObjectAcl(GetDefaultObjectAclRequest const & request)232StatusOr<ObjectAccessControl> HybridClient::GetDefaultObjectAcl( 233 GetDefaultObjectAclRequest const& request) { 234 return curl_->GetDefaultObjectAcl(request); 235 } 236 UpdateDefaultObjectAcl(UpdateDefaultObjectAclRequest const & request)237StatusOr<ObjectAccessControl> HybridClient::UpdateDefaultObjectAcl( 238 UpdateDefaultObjectAclRequest const& request) { 239 return curl_->UpdateDefaultObjectAcl(request); 240 } 241 PatchDefaultObjectAcl(PatchDefaultObjectAclRequest const & request)242StatusOr<ObjectAccessControl> HybridClient::PatchDefaultObjectAcl( 243 PatchDefaultObjectAclRequest const& request) { 244 return curl_->PatchDefaultObjectAcl(request); 245 } 246 GetServiceAccount(GetProjectServiceAccountRequest const & request)247StatusOr<ServiceAccount> HybridClient::GetServiceAccount( 248 GetProjectServiceAccountRequest const& request) { 249 return curl_->GetServiceAccount(request); 250 } 251 ListHmacKeys(ListHmacKeysRequest const & request)252StatusOr<ListHmacKeysResponse> HybridClient::ListHmacKeys( 253 ListHmacKeysRequest const& request) { 254 return curl_->ListHmacKeys(request); 255 } 256 CreateHmacKey(CreateHmacKeyRequest const & request)257StatusOr<CreateHmacKeyResponse> HybridClient::CreateHmacKey( 258 CreateHmacKeyRequest const& request) { 259 return curl_->CreateHmacKey(request); 260 } 261 DeleteHmacKey(DeleteHmacKeyRequest const & request)262StatusOr<EmptyResponse> HybridClient::DeleteHmacKey( 263 DeleteHmacKeyRequest const& request) { 264 return curl_->DeleteHmacKey(request); 265 } 266 GetHmacKey(GetHmacKeyRequest const & request)267StatusOr<HmacKeyMetadata> HybridClient::GetHmacKey( 268 GetHmacKeyRequest const& request) { 269 return curl_->GetHmacKey(request); 270 } 271 UpdateHmacKey(UpdateHmacKeyRequest const & request)272StatusOr<HmacKeyMetadata> HybridClient::UpdateHmacKey( 273 UpdateHmacKeyRequest const& request) { 274 return curl_->UpdateHmacKey(request); 275 } 276 SignBlob(SignBlobRequest const & request)277StatusOr<SignBlobResponse> HybridClient::SignBlob( 278 SignBlobRequest const& request) { 279 return curl_->SignBlob(request); 280 } 281 ListNotifications(ListNotificationsRequest const & request)282StatusOr<ListNotificationsResponse> HybridClient::ListNotifications( 283 ListNotificationsRequest const& request) { 284 return curl_->ListNotifications(request); 285 } 286 CreateNotification(CreateNotificationRequest const & request)287StatusOr<NotificationMetadata> HybridClient::CreateNotification( 288 CreateNotificationRequest const& request) { 289 return curl_->CreateNotification(request); 290 } 291 GetNotification(GetNotificationRequest const & request)292StatusOr<NotificationMetadata> HybridClient::GetNotification( 293 GetNotificationRequest const& request) { 294 return curl_->GetNotification(request); 295 } 296 DeleteNotification(DeleteNotificationRequest const & request)297StatusOr<EmptyResponse> HybridClient::DeleteNotification( 298 DeleteNotificationRequest const& request) { 299 return curl_->DeleteNotification(request); 300 } 301 302 } // namespace internal 303 } // namespace STORAGE_CLIENT_NS 304 } // namespace storage 305 } // namespace cloud 306 } // namespace google 307