/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include namespace Aws { namespace Http { namespace Standard { /** * Simple STL container modeling of HttpRequest. Implementation of the HttpRequest interface. */ class AWS_CORE_API StandardHttpRequest : public HttpRequest { public: /** * Initializes an HttpRequest object with uri and http method. */ StandardHttpRequest(const URI& uri, HttpMethod method); /** * Get All headers for this request. */ virtual HeaderValueCollection GetHeaders() const override; /** * Get the value for a Header based on its name. * This function doesn't check the existence of headerName. * So make sure you call HasHeader() first before calling this function, otherwise the behavior is undefined. */ virtual const Aws::String& GetHeaderValue(const char* headerName) const override; /** * Add a header pair */ virtual void SetHeaderValue(const char* headerName, const Aws::String& headerValue) override; /** * Add a header pair */ virtual void SetHeaderValue(const Aws::String& headerName, const Aws::String& headerValue) override; /** * delete pair by headerName */ virtual void DeleteHeader(const char* headerName) override; /** * Adds a content body stream to the request. This stream will be used to send the body to the endpoint. */ virtual inline void AddContentBody(const std::shared_ptr& strContent) override { bodyStream = strContent; } /** * Gets the content body stream that will be used for this request. */ virtual inline const std::shared_ptr& GetContentBody() const override { return bodyStream; } /** * Returns true if a header exists in the request with name */ virtual bool HasHeader(const char*) const override; /** * Get size in bytes of the request when as it will be going across the wire. */ virtual int64_t GetSize() const override; /** * Gets the factory for creating the stream that will be used in the http response. */ virtual const Aws::IOStreamFactory& GetResponseStreamFactory() const override; /** * Sets the factory for creating the stream that will be used in the http response. */ virtual void SetResponseStreamFactory(const Aws::IOStreamFactory& factory) override; private: HeaderValueCollection headerMap; std::shared_ptr bodyStream; Aws::IOStreamFactory m_responseStreamFactory; }; } // namespace Standard } // namespace Http } // namespace Aws