add http_client library, using libcurl
take out common http entities to http_common dir
This commit is contained in:
61
libs/main/http_client/pihttpclient.h
Normal file
61
libs/main/http_client/pihttpclient.h
Normal file
@@ -0,0 +1,61 @@
|
||||
#ifndef pihttpclient_h
|
||||
#define pihttpclient_h
|
||||
|
||||
#include "pihttptypes.h"
|
||||
#include "pip_http_client_export.h"
|
||||
|
||||
|
||||
class PIHTTPClientBase {
|
||||
public:
|
||||
int __infoFunc(ssize_t dltotal, ssize_t dlnow, ssize_t ultotal, ssize_t ulnow);
|
||||
int __debugFunc(int type, char * data, size_t size);
|
||||
};
|
||||
|
||||
|
||||
class PIP_HTTP_CLIENT_EXPORT PIHTTPClient: private PIHTTPClientBase {
|
||||
friend class PIHTTPClientBase;
|
||||
friend class CurlThreadPool;
|
||||
|
||||
public:
|
||||
static PIHTTPClient * create(const PIString & url, PIHTTP::Method method = PIHTTP::Method::Get, const PIHTTP::MessageConst & req = {});
|
||||
|
||||
PIHTTPClient * onFinish(std::function<void()> f);
|
||||
PIHTTPClient * onFinish(std::function<void(const PIHTTP::MessageConst &)> f);
|
||||
PIHTTPClient * onError(std::function<void()> f);
|
||||
PIHTTPClient * onError(std::function<void(const PIHTTP::MessageConst &)> f);
|
||||
PIHTTPClient * onAbort(std::function<void()> f);
|
||||
PIHTTPClient * onAbort(std::function<void(const PIHTTP::MessageConst &)> f);
|
||||
|
||||
void start();
|
||||
void abort();
|
||||
|
||||
PIString lastError() const { return last_error; }
|
||||
|
||||
private:
|
||||
NO_COPY_CLASS(PIHTTPClient)
|
||||
PIHTTPClient();
|
||||
virtual ~PIHTTPClient();
|
||||
|
||||
PRIVATE_DECLARATION(PIP_HTTP_CLIENT_EXPORT)
|
||||
|
||||
bool init();
|
||||
void perform();
|
||||
void procHeaderLine(PIString & line);
|
||||
|
||||
static size_t writeMemoryFunc(void * contents, size_t size, size_t nmemb, void * ptr);
|
||||
static size_t readMemoryFunc(void * contents, size_t size, size_t nmemb, void * ptr);
|
||||
static size_t headerFunc(char * contents, size_t size, size_t nmemb, void * ptr);
|
||||
int infoFunc(ssize_t dltotal, ssize_t dlnow, ssize_t ultotal, ssize_t ulnow);
|
||||
int debugFunc(int type, char * data, size_t size);
|
||||
|
||||
PIString url;
|
||||
PIString last_error;
|
||||
PIByteArray buffer_out;
|
||||
PIHTTP::MessageMutable request, reply;
|
||||
std::atomic_bool is_cancel = {false};
|
||||
ssize_t read_pos = 0;
|
||||
std::function<void(const PIHTTP::MessageConst &)> on_finish, on_error, on_abort;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user