1 // Copyright 2018 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_LOGGING_CLIENT_H 16 #define GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_STORAGE_INTERNAL_LOGGING_CLIENT_H 17 18 #include "google/cloud/storage/internal/raw_client.h" 19 #include "google/cloud/storage/version.h" 20 21 namespace google { 22 namespace cloud { 23 namespace storage { 24 inline namespace STORAGE_CLIENT_NS { 25 namespace internal { 26 /** 27 * A decorator for `RawClient` that logs each operation. 28 */ 29 class LoggingClient : public RawClient { 30 public: 31 explicit LoggingClient(std::shared_ptr<RawClient> client); 32 ~LoggingClient() 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 StatusOr<std::unique_ptr<ObjectReadSource>> ReadObject( 67 ReadObjectRangeRequest const&) override; 68 StatusOr<ListObjectsResponse> ListObjects(ListObjectsRequest const&) override; 69 StatusOr<EmptyResponse> DeleteObject(DeleteObjectRequest const&) override; 70 StatusOr<ObjectMetadata> UpdateObject( 71 UpdateObjectRequest const& request) override; 72 StatusOr<ObjectMetadata> PatchObject( 73 PatchObjectRequest const& request) override; 74 StatusOr<ObjectMetadata> ComposeObject( 75 ComposeObjectRequest const& request) override; 76 StatusOr<RewriteObjectResponse> RewriteObject( 77 RewriteObjectRequest const&) override; 78 StatusOr<std::unique_ptr<ResumableUploadSession>> CreateResumableSession( 79 ResumableUploadRequest const& request) override; 80 StatusOr<std::unique_ptr<ResumableUploadSession>> RestoreResumableSession( 81 std::string const& request) override; 82 StatusOr<EmptyResponse> DeleteResumableUpload( 83 DeleteResumableUploadRequest const& request) override; 84 85 StatusOr<ListBucketAclResponse> ListBucketAcl( 86 ListBucketAclRequest const& request) override; 87 StatusOr<BucketAccessControl> CreateBucketAcl( 88 CreateBucketAclRequest const&) override; 89 StatusOr<EmptyResponse> DeleteBucketAcl( 90 DeleteBucketAclRequest const&) override; 91 StatusOr<BucketAccessControl> GetBucketAcl( 92 GetBucketAclRequest const&) override; 93 StatusOr<BucketAccessControl> UpdateBucketAcl( 94 UpdateBucketAclRequest const&) override; 95 StatusOr<BucketAccessControl> PatchBucketAcl( 96 PatchBucketAclRequest const&) override; 97 98 StatusOr<ListObjectAclResponse> ListObjectAcl( 99 ListObjectAclRequest const& request) override; 100 StatusOr<ObjectAccessControl> CreateObjectAcl( 101 CreateObjectAclRequest const&) override; 102 StatusOr<EmptyResponse> DeleteObjectAcl( 103 DeleteObjectAclRequest const&) override; 104 StatusOr<ObjectAccessControl> GetObjectAcl( 105 GetObjectAclRequest const&) override; 106 StatusOr<ObjectAccessControl> UpdateObjectAcl( 107 UpdateObjectAclRequest const&) override; 108 StatusOr<ObjectAccessControl> PatchObjectAcl( 109 PatchObjectAclRequest const&) override; 110 111 StatusOr<ListDefaultObjectAclResponse> ListDefaultObjectAcl( 112 ListDefaultObjectAclRequest const& request) override; 113 StatusOr<ObjectAccessControl> CreateDefaultObjectAcl( 114 CreateDefaultObjectAclRequest const&) override; 115 StatusOr<EmptyResponse> DeleteDefaultObjectAcl( 116 DeleteDefaultObjectAclRequest const&) override; 117 StatusOr<ObjectAccessControl> GetDefaultObjectAcl( 118 GetDefaultObjectAclRequest const&) override; 119 StatusOr<ObjectAccessControl> UpdateDefaultObjectAcl( 120 UpdateDefaultObjectAclRequest const&) override; 121 StatusOr<ObjectAccessControl> PatchDefaultObjectAcl( 122 PatchDefaultObjectAclRequest const&) override; 123 124 StatusOr<ServiceAccount> GetServiceAccount( 125 GetProjectServiceAccountRequest const&) override; 126 StatusOr<ListHmacKeysResponse> ListHmacKeys( 127 ListHmacKeysRequest const&) override; 128 StatusOr<CreateHmacKeyResponse> CreateHmacKey( 129 CreateHmacKeyRequest const&) override; 130 StatusOr<EmptyResponse> DeleteHmacKey(DeleteHmacKeyRequest const&) override; 131 StatusOr<HmacKeyMetadata> GetHmacKey(GetHmacKeyRequest const&) override; 132 StatusOr<HmacKeyMetadata> UpdateHmacKey(UpdateHmacKeyRequest const&) override; 133 StatusOr<SignBlobResponse> SignBlob(SignBlobRequest const&) override; 134 135 StatusOr<ListNotificationsResponse> ListNotifications( 136 ListNotificationsRequest const&) override; 137 StatusOr<NotificationMetadata> CreateNotification( 138 CreateNotificationRequest const&) override; 139 StatusOr<NotificationMetadata> GetNotification( 140 GetNotificationRequest const&) override; 141 StatusOr<EmptyResponse> DeleteNotification( 142 DeleteNotificationRequest const&) override; 143 client()144 std::shared_ptr<RawClient> client() const { return client_; } 145 146 private: 147 std::shared_ptr<RawClient> client_; 148 }; 149 150 } // namespace internal 151 } // namespace STORAGE_CLIENT_NS 152 } // namespace storage 153 } // namespace cloud 154 } // namespace google 155 156 #endif // GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_STORAGE_INTERNAL_LOGGING_CLIENT_H 157