Program Listing for File CpprestsdkApiClient.h

Return to documentation for file (axr.sdk/net/CpprestsdkApiClient.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_CPPRESTSDK

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

#include <memory>
#include <vector>

#include <cpprest/details/basic_types.h>
#include <cpprest/http_client.h>

namespace axr {
namespace sdk {
namespace net {

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

    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;
    std::shared_ptr<web::http::client::http_client> m_Client;
};

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

#endif // USE_CPPRESTSDK