mirror of
https://github.com/HackHerz/pusher
synced 2025-12-06 02:10:19 +00:00
Forgot to include curlhandler.
This commit is contained in:
parent
aece4a5de2
commit
65c1816b2f
2 changed files with 88 additions and 0 deletions
71
src/curlhandler.cpp
Normal file
71
src/curlhandler.cpp
Normal file
|
|
@ -0,0 +1,71 @@
|
||||||
|
#include "curlhandler.h"
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
|
||||||
|
// urlDecode matches
|
||||||
|
string matches[][2] = {
|
||||||
|
{"$", "%24"},
|
||||||
|
{"&", "%26"},
|
||||||
|
{"+", "%2B"},
|
||||||
|
{",", "%2C"},
|
||||||
|
{"/", "%2F"},
|
||||||
|
{":", "%3A"},
|
||||||
|
{";", "%3B"},
|
||||||
|
{"=", "%3D"},
|
||||||
|
{"?", "%3F"},
|
||||||
|
{"@", "%40"}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// needed for handling curl output
|
||||||
|
static size_t WriteCallback(void *contents, size_t size, size_t nmemb, void *userp)
|
||||||
|
{
|
||||||
|
((std::string*)userp)->append((char*)contents, size * nmemb);
|
||||||
|
return size * nmemb;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
string CurlHandler::request(string data, const char* url)
|
||||||
|
{
|
||||||
|
CURL *curl;
|
||||||
|
CURLcode res;
|
||||||
|
string readBuffer;
|
||||||
|
curl = curl_easy_init();
|
||||||
|
|
||||||
|
if(curl)
|
||||||
|
{
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, url);
|
||||||
|
curl_easy_setopt(curl, CURLOPT_USERAGENT, USER_AGENT);
|
||||||
|
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data.c_str());
|
||||||
|
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
|
||||||
|
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
|
||||||
|
if(res != CURLE_OK)
|
||||||
|
{
|
||||||
|
//throw PusherError("Network Error");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return readBuffer;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
string CurlHandler::urlDecode(string url)
|
||||||
|
{
|
||||||
|
|
||||||
|
for(unsigned int i = 0; i < (sizeof(matches)/sizeof(matches[0])); i++)
|
||||||
|
{
|
||||||
|
size_t start_pos = 0;
|
||||||
|
while((start_pos = url.find(matches[i][0], start_pos)) != string::npos)
|
||||||
|
{
|
||||||
|
url.replace(start_pos, matches[i][0].length(), matches[i][1]);
|
||||||
|
start_pos += matches[i][1].length();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return url;
|
||||||
|
}
|
||||||
17
src/curlhandler.h
Normal file
17
src/curlhandler.h
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
#ifndef H_CURLHANDLER
|
||||||
|
#define H_CURLHANDLER
|
||||||
|
|
||||||
|
#include <curl/curl.h>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#define USER_AGENT "pusher/0.2"
|
||||||
|
|
||||||
|
|
||||||
|
class CurlHandler
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static std::string request(std::string data, const char* url);
|
||||||
|
static std::string urlDecode(std::string url);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
Loading…
Add table
Add a link
Reference in a new issue