forked from MrBesen/lolautoaccept
fix restclient corrupting requests
This commit is contained in:
parent
61c64def43
commit
201f3665b3
|
@ -46,3 +46,5 @@ protected:
|
|||
bool disableCertCheck = false;
|
||||
#endif
|
||||
};
|
||||
|
||||
const char* toString(RestClient::Method);
|
||||
|
|
|
@ -81,9 +81,11 @@ QByteArray RestClient::requestRaw(const QString& url, Method m, const QString& d
|
|||
if (!curl) return {};
|
||||
|
||||
QString requrl = baseurl + url;
|
||||
curl_easy_setopt(curl, CURLOPT_URL, requrl.toLocal8Bit().data());
|
||||
const QByteArray reqArr = requrl.toLocal8Bit();
|
||||
curl_easy_setopt(curl, CURLOPT_URL, reqArr.data());
|
||||
|
||||
curl_easy_setopt(curl, CURLOPT_USERPWD, basicauth.toLocal8Bit().data());
|
||||
const QByteArray basicArr = basicauth.toLocal8Bit();
|
||||
curl_easy_setopt(curl, CURLOPT_USERPWD, basicArr.data());
|
||||
curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
|
||||
if (disableCertCheck) {
|
||||
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
|
||||
|
@ -99,6 +101,7 @@ QByteArray RestClient::requestRaw(const QString& url, Method m, const QString& d
|
|||
struct curl_slist* headerlist = NULL;
|
||||
|
||||
headerlist = curl_slist_append(headerlist, "Accept: application/json");
|
||||
const QByteArray dataArr = data.toLocal8Bit();
|
||||
|
||||
switch (m) {
|
||||
default:
|
||||
|
@ -106,22 +109,14 @@ QByteArray RestClient::requestRaw(const QString& url, Method m, const QString& d
|
|||
curl_easy_setopt(curl, CURLOPT_HTTPGET, 1L); break;
|
||||
case Method::POST:
|
||||
curl_easy_setopt(curl, CURLOPT_POST, 1L);
|
||||
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data.toLocal8Bit().data());
|
||||
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, dataArr.data());
|
||||
headerlist = curl_slist_append(headerlist, "Content-Type: application/json");
|
||||
break;
|
||||
case Method::PUT:
|
||||
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "PUT"); // to use the POSTFIELDS (do not use CURLOPT_PUT, it does not support POSTFIELDS)
|
||||
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data.toLocal8Bit().data());
|
||||
headerlist = curl_slist_append(headerlist, "Content-Type: application/json");
|
||||
break;
|
||||
case Method::PATCH:
|
||||
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "PATCH");
|
||||
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data.toLocal8Bit().data());
|
||||
headerlist = curl_slist_append(headerlist, "Content-Type: application/json");
|
||||
break;
|
||||
case Method::DELETE:
|
||||
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "DELETE");
|
||||
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data.toLocal8Bit().data());
|
||||
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, toString(m)); // to use the POSTFIELDS (do not use CURLOPT_PUT, it does not support POSTFIELDS)
|
||||
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, dataArr.data());
|
||||
headerlist = curl_slist_append(headerlist, "Content-Type: application/json");
|
||||
break;
|
||||
}
|
||||
|
@ -184,3 +179,9 @@ QString RestClient::escape(const QString& in) const {
|
|||
curl_free(e);
|
||||
return esc;
|
||||
}
|
||||
|
||||
const char* toString(RestClient::Method m) {
|
||||
static const char* MethodNames[] = {"GET", "POST", "PUT", "PATCH", "DELETE"};
|
||||
|
||||
return MethodNames[(int) m];
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue