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>
21 const std::shared_ptr<Auth::AWSCredentialsProvider> &credentialsProvider,
const Aws::String &serviceName,
32 long long expirationInSeconds)
const override;
35 const std::shared_ptr<Aws::Http::ServiceSpecificParameters> &serviceSpecificParameters)
const override;
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();
46 inline void putRequestId(
const Aws::String &requestId)
const {
47 std::lock_guard<std::mutex> lock(m_requestProcessing);
48 m_requestsProcessing.insert(requestId);
51 inline void deleteRequestId(
const Aws::String &requestId)
const {
52 std::lock_guard<std::mutex> lock(m_requestProcessing);
53 m_requestsProcessing.erase(requestId);
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;
virtual ~S3ExpressSigner()
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 ®ion, 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