AWS SDK for C++

AWS SDK for C++ Version 1.11.717

Loading...
Searching...
No Matches
S3ExpressSigner.h
1
6#pragma once
7
8#include <aws/core/client/AWSClient.h>
9#include <aws/core/http/HttpRequest.h>
10#include <aws/core/utils/ConcurrentCache.h>
11#include <aws/s3/S3Errors.h>
12#include <aws/s3/S3ExpressIdentityProvider.h>
13#include <aws/s3/S3Request.h>
14#include <aws/s3/S3_EXPORTS.h>
15
16namespace Aws {
17namespace S3 {
19 public:
20 S3ExpressSigner(std::shared_ptr<S3ExpressIdentityProvider> S3ExpressIdentityProvider,
21 const std::shared_ptr<Auth::AWSCredentialsProvider> &credentialsProvider, const Aws::String &serviceName,
22 const Aws::String &region, PayloadSigningPolicy signingPolicy = PayloadSigningPolicy::RequestDependent,
23 bool urlEscapePath = true, Aws::Auth::AWSSigningAlgorithm signingAlgorithm = Aws::Auth::AWSSigningAlgorithm::SIGV4);
24
25 virtual ~S3ExpressSigner() {};
26
27 const char *GetName() const override;
28
29 bool SignRequest(Aws::Http::HttpRequest &request, const char *region, const char *serviceName, bool signBody) const override;
30
31 bool PresignRequest(Aws::Http::HttpRequest &request, const char *region, const char *serviceName,
32 long long expirationInSeconds) const override;
33
35 const std::shared_ptr<Aws::Http::ServiceSpecificParameters> &serviceSpecificParameters) const override;
36
37 protected:
38 bool ServiceRequireUnsignedPayload(const String &serviceName) const override;
39
40 private:
41 inline bool hasRequestId(const Aws::String &requestId) const {
42 std::lock_guard<std::mutex> lock(m_requestProcessing);
43 return m_requestsProcessing.find(requestId) != m_requestsProcessing.end();
44 }
45
46 inline void putRequestId(const Aws::String &requestId) const {
47 std::lock_guard<std::mutex> lock(m_requestProcessing);
48 m_requestsProcessing.insert(requestId);
49 }
50
51 inline void deleteRequestId(const Aws::String &requestId) const {
52 std::lock_guard<std::mutex> lock(m_requestProcessing);
53 m_requestsProcessing.erase(requestId);
54 }
55
56 std::shared_ptr<S3ExpressIdentityProvider> m_S3ExpressIdentityProvider;
57 std::shared_ptr<Auth::AWSCredentialsProvider> m_credentialsProvider;
58 mutable std::set<Aws::String> m_requestsProcessing;
59 mutable std::mutex m_requestProcessing;
60 const Aws::String m_serviceName;
61 const Aws::String m_region;
62 const Aws::String m_endpoint;
63};
64} // namespace S3
65} // namespace Aws
bool PresignRequest(Aws::Http::HttpRequest &request, const char *region, const char *serviceName, long long expirationInSeconds) const override
S3ExpressSigner(std::shared_ptr< S3ExpressIdentityProvider > S3ExpressIdentityProvider, const std::shared_ptr< Auth::AWSCredentialsProvider > &credentialsProvider, const Aws::String &serviceName, const Aws::String &region, PayloadSigningPolicy signingPolicy=PayloadSigningPolicy::RequestDependent, bool urlEscapePath=true, Aws::Auth::AWSSigningAlgorithm signingAlgorithm=Aws::Auth::AWSSigningAlgorithm::SIGV4)
const char * GetName() const override
Aws::Auth::AWSCredentials GetCredentials(const std::shared_ptr< Aws::Http::ServiceSpecificParameters > &serviceSpecificParameters) const override
bool ServiceRequireUnsignedPayload(const String &serviceName) const override
bool SignRequest(Aws::Http::HttpRequest &request, const char *region, const char *serviceName, bool signBody) const override
std::basic_string< char, std::char_traits< char >, Aws::Allocator< char > > String