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 #ifndef GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_STORAGE_INTERNAL_HYBRID_CLIENT_H 16 #define GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_STORAGE_INTERNAL_HYBRID_CLIENT_H 17 18 #include "google/cloud/storage/internal/curl_client.h" 19 #include "google/cloud/storage/internal/grpc_client.h" 20 #include "google/cloud/storage/internal/raw_client.h" 21 #include "google/cloud/storage/version.h" 22 23 namespace google { 24 namespace cloud { 25 namespace storage { 26 inline namespace STORAGE_CLIENT_NS { 27 namespace internal { 28 29 class HybridClient : public RawClient { 30 public: 31 explicit HybridClient(ClientOptions options); 32 ~HybridClient() override = default; 33 34 ClientOptions const& client_options() const override; 35 36 StatusOr<ListBucketsResponse> ListBuckets( 37 ListBucketsRequest const& request) override; 38 StatusOr<BucketMetadata> CreateBucket( 39 CreateBucketRequest const& request) override; 40 StatusOr<BucketMetadata> GetBucketMetadata( 41 GetBucketMetadataRequest const& request) override; 42 StatusOr<EmptyResponse> DeleteBucket(DeleteBucketRequest const&) override; 43 StatusOr<BucketMetadata> UpdateBucket( 44 UpdateBucketRequest const& request) override; 45 StatusOr<BucketMetadata> PatchBucket( 46 PatchBucketRequest const& request) override; 47 StatusOr<IamPolicy> GetBucketIamPolicy( 48 GetBucketIamPolicyRequest const& request) override; 49 StatusOr<NativeIamPolicy> GetNativeBucketIamPolicy( 50 GetBucketIamPolicyRequest const& request) override; 51 StatusOr<IamPolicy> SetBucketIamPolicy( 52 SetBucketIamPolicyRequest const& request) override; 53 StatusOr<NativeIamPolicy> SetNativeBucketIamPolicy( 54 SetNativeBucketIamPolicyRequest const& request) override; 55 StatusOr<TestBucketIamPermissionsResponse> TestBucketIamPermissions( 56 TestBucketIamPermissionsRequest const& request) override; 57 StatusOr<BucketMetadata> LockBucketRetentionPolicy( 58 LockBucketRetentionPolicyRequest const& request) override; 59 60 StatusOr<ObjectMetadata> InsertObjectMedia( 61 InsertObjectMediaRequest const& request) override; 62 StatusOr<ObjectMetadata> CopyObject( 63 CopyObjectRequest const& request) override; 64 StatusOr<ObjectMetadata> GetObjectMetadata( 65 GetObjectMetadataRequest const& request) override; 66 67 StatusOr<std::unique_ptr<ObjectReadSource>> ReadObject( 68 ReadObjectRangeRequest const&) override; 69 70 StatusOr<ListObjectsResponse> ListObjects(ListObjectsRequest const&) override; 71 StatusOr<EmptyResponse> DeleteObject(DeleteObjectRequest const&) override; 72 StatusOr<ObjectMetadata> UpdateObject( 73 UpdateObjectRequest const& request) override; 74 StatusOr<ObjectMetadata> PatchObject( 75 PatchObjectRequest const& request) override; 76 StatusOr<ObjectMetadata> ComposeObject( 77 ComposeObjectRequest const& request) override; 78 StatusOr<RewriteObjectResponse> RewriteObject( 79 RewriteObjectRequest const&) override; 80 StatusOr<std::unique_ptr<ResumableUploadSession>> CreateResumableSession( 81 ResumableUploadRequest const& request) override; 82 StatusOr<std::unique_ptr<ResumableUploadSession>> RestoreResumableSession( 83 std::string const& upload_id) override; 84 StatusOr<EmptyResponse> DeleteResumableUpload( 85 DeleteResumableUploadRequest const& request) override; 86 87 StatusOr<ListBucketAclResponse> ListBucketAcl( 88 ListBucketAclRequest const& request) override; 89 StatusOr<BucketAccessControl> CreateBucketAcl( 90 CreateBucketAclRequest const&) override; 91 StatusOr<EmptyResponse> DeleteBucketAcl( 92 DeleteBucketAclRequest const&) override; 93 StatusOr<BucketAccessControl> GetBucketAcl( 94 GetBucketAclRequest const&) override; 95 StatusOr<BucketAccessControl> UpdateBucketAcl( 96 UpdateBucketAclRequest const&) override; 97 StatusOr<BucketAccessControl> PatchBucketAcl( 98 PatchBucketAclRequest const&) override; 99 100 StatusOr<ListObjectAclResponse> ListObjectAcl( 101 ListObjectAclRequest const& request) override; 102 StatusOr<ObjectAccessControl> CreateObjectAcl( 103 CreateObjectAclRequest const&) override; 104 StatusOr<EmptyResponse> DeleteObjectAcl( 105 DeleteObjectAclRequest const&) override; 106 StatusOr<ObjectAccessControl> GetObjectAcl( 107 GetObjectAclRequest const&) override; 108 StatusOr<ObjectAccessControl> UpdateObjectAcl( 109 UpdateObjectAclRequest const&) override; 110 StatusOr<ObjectAccessControl> PatchObjectAcl( 111 PatchObjectAclRequest const&) override; 112 113 StatusOr<ListDefaultObjectAclResponse> ListDefaultObjectAcl( 114 ListDefaultObjectAclRequest const& request) override; 115 StatusOr<ObjectAccessControl> CreateDefaultObjectAcl( 116 CreateDefaultObjectAclRequest const&) override; 117 StatusOr<EmptyResponse> DeleteDefaultObjectAcl( 118 DeleteDefaultObjectAclRequest const&) override; 119 StatusOr<ObjectAccessControl> GetDefaultObjectAcl( 120 GetDefaultObjectAclRequest const&) override; 121 StatusOr<ObjectAccessControl> UpdateDefaultObjectAcl( 122 UpdateDefaultObjectAclRequest const&) override; 123 StatusOr<ObjectAccessControl> PatchDefaultObjectAcl( 124 PatchDefaultObjectAclRequest const&) override; 125 126 StatusOr<ServiceAccount> GetServiceAccount( 127 GetProjectServiceAccountRequest const&) override; 128 StatusOr<ListHmacKeysResponse> ListHmacKeys( 129 ListHmacKeysRequest const&) override; 130 StatusOr<CreateHmacKeyResponse> CreateHmacKey( 131 CreateHmacKeyRequest const&) override; 132 StatusOr<EmptyResponse> DeleteHmacKey(DeleteHmacKeyRequest const&) override; 133 StatusOr<HmacKeyMetadata> GetHmacKey(GetHmacKeyRequest const&) override; 134 StatusOr<HmacKeyMetadata> UpdateHmacKey(UpdateHmacKeyRequest const&) override; 135 StatusOr<SignBlobResponse> SignBlob(SignBlobRequest const&) override; 136 137 StatusOr<ListNotificationsResponse> ListNotifications( 138 ListNotificationsRequest const&) override; 139 StatusOr<NotificationMetadata> CreateNotification( 140 CreateNotificationRequest const&) override; 141 StatusOr<NotificationMetadata> GetNotification( 142 GetNotificationRequest const&) override; 143 StatusOr<EmptyResponse> DeleteNotification( 144 DeleteNotificationRequest const&) override; 145 146 private: 147 std::shared_ptr<GrpcClient> grpc_; 148 std::shared_ptr<CurlClient> curl_; 149 }; 150 151 } // namespace internal 152 } // namespace STORAGE_CLIENT_NS 153 } // namespace storage 154 } // namespace cloud 155 } // namespace google 156 157 #endif // GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_STORAGE_INTERNAL_HYBRID_CLIENT_H 158