Program Listing for File PocoApiClient.h

Return to documentation for file (axr.sdk/net/PocoApiClient.h)

// Copyright (C) AcceleratXR, Inc. All rights reserved.
//
// Author: Jean-Philippe Steinmetz <info@acceleratxr.com>
//
// NOTE: This file was auto generated by the AcceleratXR code generator.
// https://gitlab.com/AcceleratXR/Core/code_generator.git
#pragma once

#ifdef USE_POCO

#include "IApiClient.h"
#include "../Configuration.h"
#include "../Exception.h"
#include "../Variant.h"
#include "IHttpBody.h"
#include "HttpContent.h"

#include <memory>
#include <vector>

#include <cpprest/details/basic_types.h>
#include <Poco/Net/Context.h>
#include <Poco/Net/HttpClientSession.h>

namespace axr {
namespace sdk {
namespace net {

class PocoApiClient : public IApiClient
{
public:
    PocoApiClient(std::shared_ptr<Configuration> configuration);
    virtual ~PocoApiClient();

    std::shared_ptr<Configuration> GetConfiguration() const;
    void SetConfiguration(std::shared_ptr<Configuration> configuration);

    virtual pplx::task<utility::string_t> Send(
        const utility::string_t& path,
        const HttpMethod method,
        const std::map<utility::string_t, utility::string_t>& queryParams,
        const std::shared_ptr<IHttpBody> postBody,
        const std::map<utility::string_t, utility::string_t>& headerParams,
        const utility::string_t& contentType
    ) override;

    virtual pplx::task<utility::string_t> SendForm(
        const utility::string_t& path,
        const HttpMethod method,
        const std::map<utility::string_t, utility::string_t>& formParams,
        const std::map<utility::string_t, utility::string_t>& queryParams,
        const std::map<utility::string_t, utility::string_t>& headerParams
    ) override;

    virtual pplx::task<utility::string_t> SendFile(
        const utility::string_t& path,
        const HttpMethod method,
        const std::map<utility::string_t, std::shared_ptr<HttpContent>>& fileParams,
        const std::map<utility::string_t, utility::string_t>& queryParams,
        const std::map<utility::string_t, utility::string_t>& headerParams,
        const utility::string_t& contentType
    ) override;

    virtual pplx::task<void> Delete(const utility::string_t& path, const std::map<utility::string_t, utility::string_t>& queryParams, const std::map<utility::string_t, utility::string_t>& headerParams) override;

    virtual pplx::task<Variant> Get(const utility::string_t& path, const std::map<utility::string_t, utility::string_t>& queryParams, const std::map<utility::string_t, utility::string_t>& headerParams) override;

    virtual pplx::task<std::uint64_t> Head(const utility::string_t& path, const std::map<utility::string_t, utility::string_t>& queryParams, const std::map<utility::string_t, utility::string_t>& headerParams) override;

    virtual pplx::task<Variant> Post(const utility::string_t& path, const Variant& json, const std::map<utility::string_t, utility::string_t>& headerParams) override;

    virtual pplx::task<Variant> Put(const utility::string_t& path, const Variant& json, const std::map<utility::string_t, utility::string_t>& headerParams) override;

protected:

    std::shared_ptr<Configuration> m_Configuration;
    Poco::Net::Context::Ptr m_Context;
    std::shared_ptr<Poco::Net::HTTPClientSession> m_Session;
};

} // namespace net
} // namespace axr
} // namespace sdk

#endif // USE_POCO