Program Listing for File IApiClient.h

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

// Copyright (C) AcceleratXR, Inc. All rights reserved.
//
// Author: Jean-Philippe Steinmetz <info@acceleratxr.com>
#pragma once

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

#include <any>
#include <vector>

#include <cpprest/asyncrt_utils.h>

namespace axr {
namespace sdk {
namespace net {

enum class HttpMethod
{
    DEL,
    GET,
    HEAD,
    POST,
    PUT
};

class IApiClient
{
public:
    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
    ) = 0;

    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
    ) = 0;

    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
    ) = 0;

    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) = 0;

    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) = 0;

    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) = 0;

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

    virtual pplx::task<Variant> Put(const utility::string_t& path, const Variant& body, const std::map<utility::string_t, utility::string_t>& headerParams) = 0;
};

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