// BlockyFroggy
// Copyright © 2017 John Ryland.
// All rights reserved.
#pragma once
#ifndef HTTP_CLIENT_H
#define HTTP_CLIENT_H
#include <string>
#include <vector>
#include <map>
#include <cstdint>
/*
enum HTTPResult {
HTTP_OK = 0, ///<Success
HTTP_PROCESSING, ///<Processing
HTTP_PARSE, ///<url Parse error
HTTP_DNS, ///<Could not resolve name
HTTP_PRTCL, ///<Protocol error
HTTP_NOTFOUND, ///<HTTP 404 Error
HTTP_REFUSED, ///<HTTP 403 Error
HTTP_ERROR, ///<HTTP xxx error
HTTP_TIMEOUT, ///<Connection timeout
HTTP_CONN, ///<Connection error
HTTP_CLOSED, ///<Connection was closed by remote host
};
*/
//! Raw function call which returns in response the entire slurpped data from server
int makeSyncHttpRequest(std::vector<uint8_t>& response, const char* a_method, const char* a_url, const std::map<std::string,std::string>& args);
//! Data associated with a HTTP response
struct HttpResponse
{
int result;
std::string status;
std::map<std::string,std::string> headers;
std::vector<uint8_t> body;
};
//! Data associated with a HTTP request
struct HttpRequest
{
std::string method;
std::string url;
std::map<std::string,std::string> args;
};
// Parsed result data and wrapped request and response objects
//HttpResponse makeHttpRequestWrapper(const HttpRequest& request);
void makeHttpRequestWrapper(const HttpRequest& request, HttpResponse& result, std::vector<uint8_t>& body);
void makeAsyncHttpRequestWrapper(const HttpRequest& request);
#endif // HTTP_CLIENT_H