#ifndef HTTP_CLIENT_H
#define HTTP_CLIENT_H
 
#include <string>
#include <vector>
#include <map>
#include <stdint.h>


/*
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);
 

struct HttpResponse
{
  int                               result;
  std::string                       status;
  std::map<std::string,std::string> headers;
  std::vector<uint8_t>              body;
};


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

