Use references for HTMLForm, where possible.

HTMLForm can't be copied, so I'm returning using unique_ptr in maptoformdata()
and references everywhere else.
This commit is contained in:
tastytea 2019-08-21 03:53:51 +02:00
parent ecb49c7e00
commit 12c0b896db
Signed by: tastytea
GPG Key ID: CFC39497F1B26E07
6 changed files with 18 additions and 17 deletions

View File

@ -88,5 +88,5 @@ return_call API::del(const Mastodon::API::v1 &call,
return_call API::del(const std::string &call, const parameters &params) return_call API::del(const std::string &call, const parameters &params)
{ {
return _http.request(http_method::DELETE, call, maptoformdata(params)); return _http.request(http_method::DELETE, call, *maptoformdata(params));
} }

View File

@ -36,6 +36,5 @@ return_call API::patch(const Mastodon::API::v1 &call,
break; break;
} }
return _http.request(http_method::PATCH, return _http.request(http_method::PATCH, strcall, *maptoformdata(params));
strcall, maptoformdata(params));
} }

View File

@ -214,5 +214,5 @@ return_call API::post(const Mastodon::API::v1 &call)
return_call API::post(const string &call, const parameters &params) return_call API::post(const string &call, const parameters &params)
{ {
return _http.request(http_method::POST, call, maptoformdata(params)); return _http.request(http_method::POST, call, *maptoformdata(params));
} }

View File

@ -68,5 +68,5 @@ return_call API::put(const Mastodon::API::v1 &call,
return_call API::put(const string &call, const parameters &params) return_call API::put(const string &call, const parameters &params)
{ {
return _http.request(http_method::PUT, call, maptoformdata(params)); return _http.request(http_method::PUT, call, *maptoformdata(params));
} }

View File

@ -106,14 +106,15 @@ API::http::~http()
return_call API::http::request(const http_method &meth, const string &path) return_call API::http::request(const http_method &meth, const string &path)
{ {
return request(meth, path, make_unique<HTMLForm>()); HTMLForm form;
return request(meth, path, form);
} }
return_call API::http::request(const http_method &meth, const string &path, return_call API::http::request(const http_method &meth, const string &path,
unique_ptr<HTMLForm> formdata) HTMLForm &formdata)
{ {
string answer; string answer;
return request_common(meth, path, move(formdata), answer); return request_common(meth, path, formdata, answer);
} }
void API::http::request_stream(const string &path, string &stream) void API::http::request_stream(const string &path, string &stream)
@ -122,8 +123,9 @@ void API::http::request_stream(const string &path, string &stream)
_streamthread = std::thread( _streamthread = std::thread(
[&, path] // path is captured by value because it may be [&, path] // path is captured by value because it may be
{ // deleted before we access it. { // deleted before we access it.
HTMLForm form;
ret = request_common(http_method::GET_STREAM, path, ret = request_common(http_method::GET_STREAM, path,
make_unique<HTMLForm>(), stream); form, stream);
ttdebug << "Remaining content of the stream: " << stream << '\n'; ttdebug << "Remaining content of the stream: " << stream << '\n';
if (!ret) if (!ret)
{ {
@ -137,7 +139,7 @@ void API::http::request_stream(const string &path, string &stream)
return_call API::http::request_common(const http_method &meth, return_call API::http::request_common(const http_method &meth,
const string &path, const string &path,
unique_ptr<HTMLForm> formdata, HTMLForm &formdata,
string &answer) string &answer)
{ {
ttdebug << "Path is: " << path << '\n'; ttdebug << "Path is: " << path << '\n';
@ -190,11 +192,11 @@ return_call API::http::request_common(const http_method &meth,
request.set("Authorization", " Bearer " + _access_token); request.set("Authorization", " Bearer " + _access_token);
} }
if (!formdata->empty()) if (!formdata.empty())
{ {
ttdebug << "Size of HTMLForm is " << formdata->size() << '\n'; ttdebug << "Size of HTMLForm is " << formdata.size() << '\n';
formdata->prepareSubmit(request); formdata.prepareSubmit(request);
formdata->write(session.sendRequest(request)); formdata.write(session.sendRequest(request));
} }
else else
{ {
@ -246,7 +248,7 @@ return_call API::http::request_common(const http_method &meth,
} }
else else
{ {
return request_common(meth, location, move(formdata), answer); return request_common(meth, location, formdata, answer);
} }
} }
default: default:

View File

@ -105,7 +105,7 @@ namespace Mastodon
*/ */
return_call request(const http_method &meth, return_call request(const http_method &meth,
const string &path, const string &path,
unique_ptr<HTMLForm> formdata); HTMLForm &formdata);
/*! /*!
* @brief HTTP Request for streams. * @brief HTTP Request for streams.
@ -156,7 +156,7 @@ namespace Mastodon
return_call request_common(const http_method &meth, return_call request_common(const http_method &meth,
const string &path, const string &path,
unique_ptr<HTMLForm> formdata, HTMLForm &formdata,
string &answer); string &answer);
size_t callback_write(char* data, size_t size, size_t nmemb, size_t callback_write(char* data, size_t size, size_t nmemb,
string *oss); string *oss);