JUCE module for making HTTP requests to REST API's
First declare your class instance e.g. as a member variable:
adamski::RestRequest request;
Then in your constructor add any headers you will need across different requests e.g.:
request.header ("Content-Type", "application/json");
request.header ("Authorization", "Basic " + Base64::toBase64 ("username:password"));
Example GET
request:
adamski::RestRequest::Response response = request.get ("registry/_design/module-views/_view/all-modules")
.execute();
// Example response debugging
DBG (response.bodyAsString);
DBG (response.result.getErrorMessage());
for (auto key : response.headers.getAllKeys())
{
DBG (key << ": " << response.headers.getValue(key, "n/a"));
}
Example POST
request:
adamski::RestRequest::Response response = request.post ("registry/_find")
.field ("selector", searchString)
.execute();
Example PUT
request with chained field methods:
adamski::RestRequest::Response response = request.put ("_users/" + id)
.field ("type", "user")
.field ("name", username)
.field ("email", email)
.field ("roles", Array<var>({var("publisher")}))
.field ("password_sha", stringToSHA1 (password + salt))
.field ("salt", salt)
.execute();
If you need to encode or decode strings with SHA1 I made a JUCE module out of an open source library called smallsha1: https://github.com/adamski/smallsha1