增加luaApi_HttpGet和luaApi_HttpPost
This commit is contained in:
159
csgo2/libcurl/libcurl.cpp
Normal file
159
csgo2/libcurl/libcurl.cpp
Normal file
@@ -0,0 +1,159 @@
|
||||
#include "libcurl.h"
|
||||
|
||||
CRITICAL_SECTION curl_critical;
|
||||
|
||||
size_t writer(char* data, size_t size, size_t nmemb, std::string* writer_data)
|
||||
{
|
||||
size_t sizes = size * nmemb;
|
||||
|
||||
if (NULL == writer_data) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
writer_data->append(data, sizes);
|
||||
return sizes;
|
||||
}
|
||||
|
||||
bool curl_get(std::string url, std::string* pbuffer, curl_slist* headers, bool tls, bool proxy)
|
||||
{
|
||||
curl_code code;
|
||||
curl_handle handle;
|
||||
|
||||
handle = curl_easy_init();
|
||||
if (NULL == handle) {
|
||||
return false;
|
||||
}
|
||||
code = curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, writer);
|
||||
if (code != CURLE_OK) {
|
||||
curl_easy_cleanup(handle);
|
||||
return false;
|
||||
}
|
||||
code = curl_easy_setopt(handle, CURLOPT_WRITEDATA, pbuffer);
|
||||
if (code != CURLE_OK) {
|
||||
curl_easy_cleanup(handle);
|
||||
return false;
|
||||
}
|
||||
if (tls) {
|
||||
code = curl_easy_setopt(handle, CURLOPT_SSL_VERIFYPEER, false);
|
||||
if (code != CURLE_OK) {
|
||||
curl_easy_cleanup(handle);
|
||||
return false;
|
||||
}
|
||||
code = curl_easy_setopt(handle, CURLOPT_SSL_VERIFYHOST, true);
|
||||
if (code != CURLE_OK) {
|
||||
curl_easy_cleanup(handle);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
code = curl_easy_setopt(handle, CURLOPT_URL, url.c_str());
|
||||
if (code != CURLE_OK) {
|
||||
curl_easy_cleanup(handle);
|
||||
return false;
|
||||
}
|
||||
code = curl_easy_setopt(handle, CURLOPT_HTTPHEADER, headers);
|
||||
if (code != CURLE_OK) {
|
||||
curl_easy_cleanup(handle);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (proxy) {
|
||||
curl_easy_setopt(handle, CURLOPT_PROXY, "127.0.0.1");
|
||||
curl_easy_setopt(handle, CURLOPT_PROXYPORT, 7890);
|
||||
curl_easy_setopt(handle, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);
|
||||
}
|
||||
|
||||
EnterCriticalSection(&curl_critical);
|
||||
code = curl_easy_perform(handle);
|
||||
LeaveCriticalSection(&curl_critical);
|
||||
|
||||
if (code != CURLE_OK) {
|
||||
curl_easy_cleanup(handle);
|
||||
return false;
|
||||
}
|
||||
|
||||
curl_easy_cleanup(handle);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool curl_post(std::string url, std::string* pbuffer, std::string data, curl_slist* headers, bool tls, bool proxy)
|
||||
{
|
||||
curl_code code;
|
||||
curl_handle handle;
|
||||
|
||||
handle = curl_easy_init();
|
||||
if (NULL == handle) {
|
||||
return false;
|
||||
}
|
||||
code = curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, writer);
|
||||
if (code != CURLE_OK) {
|
||||
curl_easy_cleanup(handle);
|
||||
return false;
|
||||
}
|
||||
code = curl_easy_setopt(handle, CURLOPT_WRITEDATA, pbuffer);
|
||||
if (code != CURLE_OK) {
|
||||
curl_easy_cleanup(handle);
|
||||
return false;
|
||||
}
|
||||
if (tls) {
|
||||
code = curl_easy_setopt(handle, CURLOPT_SSL_VERIFYPEER, false);
|
||||
if (code != CURLE_OK) {
|
||||
curl_easy_cleanup(handle);
|
||||
return false;
|
||||
}
|
||||
code = curl_easy_setopt(handle, CURLOPT_SSL_VERIFYHOST, true);
|
||||
if (code != CURLE_OK) {
|
||||
curl_easy_cleanup(handle);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
code = curl_easy_setopt(handle, CURLOPT_POST, true);
|
||||
if (code != CURLE_OK) {
|
||||
curl_easy_cleanup(handle);
|
||||
return false;
|
||||
}
|
||||
code = curl_easy_setopt(handle, CURLOPT_POSTFIELDS, data.c_str());
|
||||
if (code != CURLE_OK) {
|
||||
curl_easy_cleanup(handle);
|
||||
return false;
|
||||
}
|
||||
code = curl_easy_setopt(handle, CURLOPT_URL, url.c_str());
|
||||
if (code != CURLE_OK) {
|
||||
curl_easy_cleanup(handle);
|
||||
return false;
|
||||
}
|
||||
code = curl_easy_setopt(handle, CURLOPT_HTTPHEADER, headers);
|
||||
if (code != CURLE_OK) {
|
||||
curl_easy_cleanup(handle);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (proxy) {
|
||||
curl_easy_setopt(handle, CURLOPT_PROXY, "127.0.0.1");
|
||||
curl_easy_setopt(handle, CURLOPT_PROXYPORT, 7890);
|
||||
curl_easy_setopt(handle, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);
|
||||
}
|
||||
|
||||
EnterCriticalSection(&curl_critical);
|
||||
code = curl_easy_perform(handle);
|
||||
LeaveCriticalSection(&curl_critical);
|
||||
|
||||
if (code != CURLE_OK) {
|
||||
curl_easy_cleanup(handle);
|
||||
return false;
|
||||
}
|
||||
|
||||
curl_easy_cleanup(handle);
|
||||
return true;
|
||||
}
|
||||
|
||||
void curl_init()
|
||||
{
|
||||
InitializeCriticalSection(&curl_critical);
|
||||
curl_global_init(CURL_GLOBAL_DEFAULT);
|
||||
}
|
||||
|
||||
void curl_cleanup()
|
||||
{
|
||||
curl_global_cleanup();
|
||||
DeleteCriticalSection(&curl_critical);
|
||||
}
|
||||
Reference in New Issue
Block a user