forked from loafle/openapi-generator-original
cpp-tiny 3.0 (#10739)
* int get generated as long * test revised * moved network logic to abstract service * New service hooks in services * bourne version * remove comment from cert * sendRequest remove direct link to http request * Network logic into AbstractService * Rename AbstractService to Service * add query params * Remove unused comment * Change files in openapi * amazon root CA 1 default ssl certificate * rename service * duplicate line * Set todo * lint whitespace fix * uncomment array querey paramns * Form params in service body * this is nice * added form params * remove random mustache variable * change form map to list, as it would overwrite if there was duplicates * maven build and doc gen
This commit is contained in:
parent
a7242cc8d0
commit
c741b10fb7
@ -152,17 +152,16 @@ public class CppTinyClientCodegen extends AbstractCppCodegen implements CodegenC
|
|||||||
|
|
||||||
// SERVICES: Helpers
|
// SERVICES: Helpers
|
||||||
supportingFiles.add(new SupportingFile("service/Response.h.mustache", serviceFolder, "Response.h"));
|
supportingFiles.add(new SupportingFile("service/Response.h.mustache", serviceFolder, "Response.h"));
|
||||||
supportingFiles.add(new SupportingFile("service/AbstractService.h.mustache", serviceFolder, "AbstractService.h"));
|
supportingFiles.add(new SupportingFile("service/Service.h.mustache", serviceFolder, "Service.h"));
|
||||||
supportingFiles.add(new SupportingFile("service/AbstractService.cpp.mustache", serviceFolder, "AbstractService.cpp"));
|
supportingFiles.add(new SupportingFile("service/Service.cpp.mustache", serviceFolder, "Service.cpp"));
|
||||||
|
|
||||||
// Main
|
// Main
|
||||||
supportingFiles.add(new SupportingFile("main.mustache", CppTinyClientCodegen.sourceFolder, "main.cpp"));
|
supportingFiles.add(new SupportingFile("main.mustache", CppTinyClientCodegen.sourceFolder, "main.cpp")); // TODO no overwrite
|
||||||
|
|
||||||
// Config files
|
// Config files
|
||||||
supportingFiles.add(new SupportingFile("README.mustache", rootFolder, "README.md"));
|
supportingFiles.add(new SupportingFile("README.mustache", rootFolder, "README.md"));
|
||||||
supportingFiles.add(new SupportingFile("platformio.ini.mustache", rootFolder, "platformio.ini"));
|
supportingFiles.add(new SupportingFile("platformio.ini.mustache", rootFolder, "platformio.ini")); // TODO no overwrite
|
||||||
supportingFiles.add(new SupportingFile("root.cert.mustache", rootFolder, "root.cert"));
|
supportingFiles.add(new SupportingFile("root.cert.mustache", rootFolder, "root.cert")); // TODO no overwrite
|
||||||
supportingFiles.add(new SupportingFile("README.mustache", rootFolder, "README.md"));
|
|
||||||
supportingFiles.add(new SupportingFile("pre_compiling_bourne.py.mustache", rootFolder, "pre_compiling_bourne.py"));
|
supportingFiles.add(new SupportingFile("pre_compiling_bourne.py.mustache", rootFolder, "pre_compiling_bourne.py"));
|
||||||
|
|
||||||
defaultIncludes = new HashSet<String>(
|
defaultIncludes = new HashSet<String>(
|
||||||
@ -232,7 +231,6 @@ public class CppTinyClientCodegen extends AbstractCppCodegen implements CodegenC
|
|||||||
@Override
|
@Override
|
||||||
public void processOpts() {
|
public void processOpts() {
|
||||||
super.processOpts();
|
super.processOpts();
|
||||||
// Throw exception if http and esp8266
|
|
||||||
|
|
||||||
// -- --additional-properties=controller=<controllername>
|
// -- --additional-properties=controller=<controllername>
|
||||||
if (additionalProperties.containsKey(MICROCONTROLLER)) {
|
if (additionalProperties.containsKey(MICROCONTROLLER)) {
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
platform = espressif32
|
platform = espressif32
|
||||||
board = nodemcu-32s
|
board = nodemcu-32s
|
||||||
framework = arduino
|
framework = arduino
|
||||||
lib_deps = https://github.com/steinwurf/bourne.git
|
lib_deps = https://github.com/steinwurf/bourne.git#9.0.0
|
||||||
extra_scripts = pre_compiling_bourne.py
|
extra_scripts = pre_compiling_bourne.py
|
||||||
{{/isESP32}}
|
{{/isESP32}}
|
||||||
|
|
||||||
@ -12,7 +12,7 @@ extra_scripts = pre_compiling_bourne.py
|
|||||||
platform = espressif8266
|
platform = espressif8266
|
||||||
board = d1_mini
|
board = d1_mini
|
||||||
framework = arduino
|
framework = arduino
|
||||||
lib_deps = https://github.com/steinwurf/bourne.git
|
lib_deps = https://github.com/steinwurf/bourne.git#9.0.0
|
||||||
build_flags = -fexceptions
|
build_flags = -fexceptions
|
||||||
build_unflags = -fno-exceptions
|
build_unflags = -fno-exceptions
|
||||||
extra_scripts = pre_compiling_bourne.py
|
extra_scripts = pre_compiling_bourne.py
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
// Below is two examples of root certificates.
|
// Below is two examples of root certificates.
|
||||||
|
|
||||||
// Let's encrypt root certificate
|
// Let's encrypt root certificate
|
||||||
/**
|
|
||||||
"-----BEGIN CERTIFICATE-----\n" \
|
"-----BEGIN CERTIFICATE-----\n" \
|
||||||
"MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh\n" \
|
"MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh\n" \
|
||||||
"MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\n" \
|
"MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\n" \
|
||||||
@ -25,10 +25,10 @@
|
|||||||
"YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk\n" \
|
"YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk\n" \
|
||||||
"CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=\n" \
|
"CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=\n" \
|
||||||
"-----END CERTIFICATE-----\n"
|
"-----END CERTIFICATE-----\n"
|
||||||
*/
|
|
||||||
|
|
||||||
// Amazon_Root_CA_1.pem
|
// Amazon_Root_CA_1.pem
|
||||||
/**
|
|
||||||
"-----BEGIN CERTIFICATE-----\n" \
|
"-----BEGIN CERTIFICATE-----\n" \
|
||||||
"MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsF\n" \
|
"MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsF\n" \
|
||||||
"ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6\n" \
|
"ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6\n" \
|
||||||
@ -49,4 +49,5 @@
|
|||||||
"5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2xJNDd2ZhwLnoQdeXeGADbkpy\n" \
|
"5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2xJNDd2ZhwLnoQdeXeGADbkpy\n" \
|
||||||
"rqXRfboQnoZsG4q5WTP468SQvvG5\n" \
|
"rqXRfboQnoZsG4q5WTP468SQvvG5\n" \
|
||||||
"-----END CERTIFICATE-----\n" \
|
"-----END CERTIFICATE-----\n" \
|
||||||
*/
|
|
||||||
|
|
||||||
|
@ -1,15 +0,0 @@
|
|||||||
#include "AbstractService.h"
|
|
||||||
#include "Arduino.h"
|
|
||||||
|
|
||||||
{{#isESP8266}}
|
|
||||||
void Tiny::AbstractService::begin(std::string url){
|
|
||||||
http.begin(client, String(url.c_str()));
|
|
||||||
}
|
|
||||||
{{/isESP8266}}
|
|
||||||
|
|
||||||
|
|
||||||
{{#isESP32}}
|
|
||||||
void Tiny::AbstractService::begin(std::string url){
|
|
||||||
http.begin(String(url.c_str()), test_root_ca); //HTTPS connection
|
|
||||||
}
|
|
||||||
{{/isESP32}}
|
|
@ -1,39 +0,0 @@
|
|||||||
#ifndef TINY_CPP_CLIENT_ABSTRACTSERVICE_H_
|
|
||||||
#define TINY_CPP_CLIENT_ABSTRACTSERVICE_H_
|
|
||||||
{{#isESP8266}}
|
|
||||||
#include <WiFiClient.h>
|
|
||||||
#include <ESP8266HTTPClient.h>
|
|
||||||
{{/isESP8266}}
|
|
||||||
|
|
||||||
{{#isESP32}}
|
|
||||||
#include "HTTPClient.h"
|
|
||||||
{{/isESP32}}
|
|
||||||
#include "Response.h"
|
|
||||||
namespace Tiny {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class
|
|
||||||
* Generated with openapi::tiny-cpp-client
|
|
||||||
*/
|
|
||||||
class AbstractService {
|
|
||||||
public:
|
|
||||||
HTTPClient http;
|
|
||||||
{{#isESP8266}}
|
|
||||||
WiFiClient client;
|
|
||||||
{{/isESP8266}}
|
|
||||||
std::string basepath = "https://petstore3.swagger.io/api/v3"; // TODO: change to your url
|
|
||||||
|
|
||||||
void begin(std::string url);
|
|
||||||
|
|
||||||
{{#isESP32}}
|
|
||||||
// Go and comment out a certificate in root.cert, if you get an error here
|
|
||||||
// Certificate from file
|
|
||||||
const char* test_root_ca =
|
|
||||||
#include "../../root.cert"
|
|
||||||
;
|
|
||||||
{{/isESP32}}
|
|
||||||
|
|
||||||
}; // end class
|
|
||||||
}// namespace Tinyclient
|
|
||||||
|
|
||||||
#endif /* TINY_CPP_CLIENT_ABSTRACTSERVICE_H_ */
|
|
75
modules/openapi-generator/src/main/resources/cpp-tiny/service/Service.cpp.mustache
vendored
Normal file
75
modules/openapi-generator/src/main/resources/cpp-tiny/service/Service.cpp.mustache
vendored
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
#include "Service.h"
|
||||||
|
#include "Arduino.h"
|
||||||
|
|
||||||
|
{{#isESP8266}}
|
||||||
|
void Tiny::Service::begin(std::string url){
|
||||||
|
http.begin(client, String(url.c_str()));
|
||||||
|
|
||||||
|
// reset params
|
||||||
|
queryParams.begin();
|
||||||
|
formParams.begin();
|
||||||
|
}
|
||||||
|
{{/isESP8266}}
|
||||||
|
{{#isESP32}}
|
||||||
|
void Tiny::Service::begin(std::string url){
|
||||||
|
http.begin(String(url.c_str()), test_root_ca); //HTTPS connection
|
||||||
|
|
||||||
|
|
||||||
|
// reset params
|
||||||
|
queryParams.begin();
|
||||||
|
formParams.begin();
|
||||||
|
}
|
||||||
|
{{/isESP32}}
|
||||||
|
|
||||||
|
void Tiny::Service::addHeader(std::string key, std::string value){
|
||||||
|
http.addHeader(String(key.c_str()), String(value.c_str()));
|
||||||
|
}
|
||||||
|
|
||||||
|
void Tiny::Service::addQueryParam(std::string key, std::string value){
|
||||||
|
formParams.push_back(std::make_tuple(key, value));
|
||||||
|
}
|
||||||
|
|
||||||
|
void Tiny::Service::addFormParam(std::string key, std::string value){
|
||||||
|
formParams.push_back(std::make_tuple(key, value));
|
||||||
|
}
|
||||||
|
|
||||||
|
int Tiny::Service::sendRequest(std::string url, const char * type, uint8_t * payload, size_t size){
|
||||||
|
this->url = url;
|
||||||
|
prepareRequest();
|
||||||
|
|
||||||
|
begin(this->url);
|
||||||
|
|
||||||
|
int httpCode = http.sendRequest(type, payload, size);
|
||||||
|
return httpCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Tiny::Service::prepareRequest(){
|
||||||
|
if (!queryParams.empty()){
|
||||||
|
this->url += "?" + encodeKeyValueTuple(this->queryParams);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!formParams.empty()){
|
||||||
|
this->payload = encodeKeyValueTuple(this->formParams);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string Tiny::Service::encodeKeyValueTuple(std::list<std::tuple<std::string, std::string>> params){
|
||||||
|
std::string encoded = "";
|
||||||
|
for (auto const& tuple : params) {
|
||||||
|
encoded += std::get<0>(tuple) + "=" + std::get<1>(tuple) + "&";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remove last '&' char from url
|
||||||
|
if (! encoded.empty())
|
||||||
|
encoded.pop_back();
|
||||||
|
|
||||||
|
return encoded;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
String Tiny::Service::getResponseBody(){
|
||||||
|
String respBody = http.getString();
|
||||||
|
http.end();
|
||||||
|
return respBody;
|
||||||
|
}
|
||||||
|
|
54
modules/openapi-generator/src/main/resources/cpp-tiny/service/Service.h.mustache
vendored
Normal file
54
modules/openapi-generator/src/main/resources/cpp-tiny/service/Service.h.mustache
vendored
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
#ifndef TINY_CPP_CLIENT_ABSTRACTSERVICE_H_
|
||||||
|
#define TINY_CPP_CLIENT_ABSTRACTSERVICE_H_
|
||||||
|
{{#isESP8266}}
|
||||||
|
#include <WiFiClient.h>
|
||||||
|
#include <ESP8266HTTPClient.h>
|
||||||
|
{{/isESP8266}}
|
||||||
|
|
||||||
|
{{#isESP32}}
|
||||||
|
#include "HTTPClient.h"
|
||||||
|
{{/isESP32}}
|
||||||
|
#include "Response.h"
|
||||||
|
#include <list>
|
||||||
|
namespace Tiny {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class
|
||||||
|
* Generated with openapi::tiny-cpp-client
|
||||||
|
*/
|
||||||
|
class Service {
|
||||||
|
public:
|
||||||
|
HTTPClient http;
|
||||||
|
{{#isESP8266}}
|
||||||
|
WiFiClient client;
|
||||||
|
{{/isESP8266}}
|
||||||
|
std::string basepath = "https://petstore3.swagger.io/api/v3"; // TODO: change to your url
|
||||||
|
std::string url = "";
|
||||||
|
std::string payload = "";
|
||||||
|
std::list<std::tuple<std::string, std::string>> queryParams;
|
||||||
|
std::list<std::tuple<std::string, std::string>> formParams;
|
||||||
|
|
||||||
|
int sendRequest(std::string url, const char * type, uint8_t * payload, size_t size);
|
||||||
|
String getResponseBody();
|
||||||
|
|
||||||
|
void addQueryParam(std::string key, std::string value);
|
||||||
|
void addFormParam(std::string key, std::string value);
|
||||||
|
void addHeader(std::string key, std::string value);
|
||||||
|
|
||||||
|
{{#isESP32}}
|
||||||
|
// Go and comment out a certificate in root.cert, if you get an error here
|
||||||
|
// Certificate from file
|
||||||
|
const char* test_root_ca =
|
||||||
|
#include "../../root.cert"
|
||||||
|
;
|
||||||
|
{{/isESP32}}
|
||||||
|
|
||||||
|
private:
|
||||||
|
void begin(std::string url);
|
||||||
|
void prepareRequest();
|
||||||
|
std::string encodeKeyValueTuple(std::list<std::tuple<std::string, std::string>> params);
|
||||||
|
|
||||||
|
}; // end class
|
||||||
|
}// namespace Tinyclient
|
||||||
|
|
||||||
|
#endif /* TINY_CPP_CLIENT_ABSTRACTSERVICE_H_ */
|
@ -40,10 +40,44 @@ using namespace Tiny;
|
|||||||
{{! Method start}}
|
{{! Method start}}
|
||||||
{
|
{
|
||||||
std::string url = basepath + "{{{path}}}"; //{{#pathParams}}{{{paramName}}} {{/pathParams}}
|
std::string url = basepath + "{{{path}}}"; //{{#pathParams}}{{{paramName}}} {{/pathParams}}
|
||||||
|
|
||||||
|
|
||||||
|
// Headers | {{#headerParams}} {{paramName}} {{/headerParams}}
|
||||||
|
{{#headerParams}}
|
||||||
|
addHeader("{{baseName}}",{{paramName}});
|
||||||
|
{{/headerParams}}
|
||||||
|
|
||||||
// Query | {{#queryParams}}{{paramName}} {{/queryParams}}
|
// Query | {{#queryParams}}{{paramName}} {{/queryParams}}
|
||||||
// Headers | {{#headerParams}}{{paramName}} {{/headerParams}}
|
{{#queryParams}}
|
||||||
|
{{#isArray}}
|
||||||
|
for (auto &x : {{paramName}}){
|
||||||
|
addQueryParam("{{baseName}}", std::string(x));
|
||||||
|
}
|
||||||
|
{{/isArray}}
|
||||||
|
{{^isArray}}
|
||||||
|
addQueryParam("{{baseName}}",{{paramName}});
|
||||||
|
{{/isArray}}
|
||||||
|
{{/queryParams}}
|
||||||
|
|
||||||
// Form | {{#formParams}}{{paramName}} {{/formParams}}
|
// Form | {{#formParams}}{{paramName}} {{/formParams}}
|
||||||
// Body | {{#bodyParam}}{{paramName}}{{/bodyParam}}
|
{{#hasFormParams}}
|
||||||
|
addHeader("Content-Type", "application/x-www-form-urlencoded");
|
||||||
|
{{/hasFormParams}}
|
||||||
|
{{#hasBodyParam}}
|
||||||
|
addHeader("Content-Type", "application/json");
|
||||||
|
{{/hasBodyParam}}
|
||||||
|
|
||||||
|
{{#formParams}}
|
||||||
|
{{#isArray}}
|
||||||
|
for (auto &x : {{paramName}}){
|
||||||
|
addFormParam("{{baseName}}", std::string(x));
|
||||||
|
}
|
||||||
|
{{/isArray}}
|
||||||
|
{{^isArray}}
|
||||||
|
addFormParam("{{baseName}}",{{paramName}});
|
||||||
|
{{/isArray}}
|
||||||
|
{{/formParams}}
|
||||||
|
|
||||||
|
|
||||||
{{#pathParams}}
|
{{#pathParams}}
|
||||||
std::string s_{{paramName}}("{");
|
std::string s_{{paramName}}("{");
|
||||||
@ -56,13 +90,12 @@ using namespace Tiny;
|
|||||||
url.insert(pos, stringify({{paramName}}));
|
url.insert(pos, stringify({{paramName}}));
|
||||||
{{/pathParams}}
|
{{/pathParams}}
|
||||||
|
|
||||||
begin(url);
|
|
||||||
|
|
||||||
std::string payload = "";
|
std::string payload = "";
|
||||||
// Send Request
|
// Send Request
|
||||||
// METHOD | {{httpMethod}}
|
// METHOD | {{httpMethod}}
|
||||||
|
// Body | {{#bodyParam}}{{paramName}}{{/bodyParam}}
|
||||||
{{#bodyParam}}
|
{{#bodyParam}}
|
||||||
http.addHeader("Content-Type", "application/json");
|
|
||||||
|
|
||||||
{{#isContainer}}
|
{{#isContainer}}
|
||||||
{{#isArray}}
|
{{#isArray}}
|
||||||
@ -101,14 +134,12 @@ using namespace Tiny;
|
|||||||
{{/isContainer}}
|
{{/isContainer}}
|
||||||
|
|
||||||
{{/bodyParam}}
|
{{/bodyParam}}
|
||||||
int httpCode = http.sendRequest("{{httpMethod}}", reinterpret_cast<uint8_t*>(&payload[0]), payload.length());
|
int httpCode = sendRequest(url, "{{httpMethod}}", reinterpret_cast<uint8_t*>(&payload[0]), payload.length());
|
||||||
|
|
||||||
// Handle Request
|
// Handle Request
|
||||||
String output = http.getString();
|
String output = getResponseBody();
|
||||||
std::string output_string = output.c_str();
|
std::string output_string = output.c_str();
|
||||||
|
|
||||||
http.end();
|
|
||||||
|
|
||||||
{{#returnType}}
|
{{#returnType}}
|
||||||
|
|
||||||
{{#returnContainer}}
|
{{#returnContainer}}
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
{{{defaultInclude}}}
|
{{{defaultInclude}}}
|
||||||
#include "Response.h"
|
#include "Response.h"
|
||||||
#include "Arduino.h"
|
#include "Arduino.h"
|
||||||
#include "AbstractService.h"
|
#include "Service.h"
|
||||||
#include "Helpers.h"
|
#include "Helpers.h"
|
||||||
#include <list>
|
#include <list>
|
||||||
|
|
||||||
@ -20,7 +20,7 @@ namespace Tiny {
|
|||||||
* Generated with openapi::tiny-cpp-client
|
* Generated with openapi::tiny-cpp-client
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class {{classname}} : public AbstractService {
|
class {{classname}} : public Service {
|
||||||
public:
|
public:
|
||||||
{{! Constructor }}
|
{{! Constructor }}
|
||||||
{{classname}}() = default;
|
{{classname}}() = default;
|
||||||
|
@ -0,0 +1,56 @@
|
|||||||
|
package org.openapitools.codegen.cpptiny;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.models.OpenAPI;
|
||||||
|
import io.swagger.v3.oas.models.media.IntegerSchema;
|
||||||
|
import io.swagger.v3.oas.models.media.ObjectSchema;
|
||||||
|
import io.swagger.v3.oas.models.media.Schema;
|
||||||
|
import org.openapitools.codegen.CodegenModel;
|
||||||
|
import org.openapitools.codegen.CodegenProperty;
|
||||||
|
import org.openapitools.codegen.TestUtils;
|
||||||
|
import org.openapitools.codegen.languages.CppTinyClientCodegen;
|
||||||
|
import org.testng.Assert;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
@SuppressWarnings("rawtypes")
|
||||||
|
public class CppTinyBaseTest {
|
||||||
|
protected CppTinyClientCodegen codegen = new CppTinyClientCodegen();
|
||||||
|
|
||||||
|
protected CodegenModel makeCodeGenFrom(Schema model) {
|
||||||
|
OpenAPI openAPI = TestUtils.createOpenAPIWithOneSchema("sample", model);
|
||||||
|
codegen.setOpenAPI(openAPI);
|
||||||
|
return codegen.fromModel("sample", model);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected Schema testSchema() {
|
||||||
|
return new ObjectSchema()
|
||||||
|
.description("a sample model");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test(description = "An example of testing the code model before it is rendered")
|
||||||
|
public void exampleOfATest() {
|
||||||
|
|
||||||
|
// Make a schema object. We pretend this model comes from an OAS (openapi specification)
|
||||||
|
// https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#schemaObject
|
||||||
|
// Then add the properties to your model.
|
||||||
|
|
||||||
|
// Arrange
|
||||||
|
Schema schemaModel = testSchema();
|
||||||
|
schemaModel.addProperties("id", new IntegerSchema().format("int64"));
|
||||||
|
|
||||||
|
|
||||||
|
// Then we generated a codemodel, with the cpp tiny code generator.
|
||||||
|
// Act
|
||||||
|
CodegenModel model_to_be_generated = makeCodeGenFrom(schemaModel);
|
||||||
|
|
||||||
|
// We can then test, and see if the codegen model have the right data.
|
||||||
|
// Assert
|
||||||
|
CodegenProperty id_property = model_to_be_generated.vars.get(0);
|
||||||
|
Assert.assertEquals(id_property.dataType, "long");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Make example test of assert that some codegen is generated correctly
|
||||||
|
// Assert.assertEquals(generated_code, "long id = 0;"
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
package org.openapitools.codegen.cpptiny;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.models.OpenAPI;
|
||||||
|
import io.swagger.v3.oas.models.media.IntegerSchema;
|
||||||
|
import io.swagger.v3.oas.models.media.ObjectSchema;
|
||||||
|
import io.swagger.v3.oas.models.media.Schema;
|
||||||
|
import org.openapitools.codegen.*;
|
||||||
|
import org.openapitools.codegen.languages.CppTinyClientCodegen;
|
||||||
|
import org.testng.Assert;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public class CppTinyClientModelTest extends CppTinyBaseTest {
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,25 @@
|
|||||||
|
package org.openapitools.codegen.cpptiny;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.models.media.IntegerSchema;
|
||||||
|
import io.swagger.v3.oas.models.media.Schema;
|
||||||
|
import org.openapitools.codegen.CodegenModel;
|
||||||
|
import org.openapitools.codegen.CodegenProperty;
|
||||||
|
import org.testng.Assert;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
@SuppressWarnings("rawtypes")
|
||||||
|
public class CppTinyServiceServiceTest extends CppTinyBaseTest {
|
||||||
|
@Test(description = "sets example value")
|
||||||
|
public void intTypeIsLong() {
|
||||||
|
// Arrange
|
||||||
|
Schema schema = testSchema();
|
||||||
|
schema.addProperties("id", new IntegerSchema().format("int64"));
|
||||||
|
|
||||||
|
// Act
|
||||||
|
CodegenModel model_to_be_generated = makeCodeGenFrom(schema);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
CodegenProperty id_property = model_to_be_generated.vars.get(0);
|
||||||
|
Assert.assertEquals(id_property.dataType, "long");
|
||||||
|
}
|
||||||
|
}
|
@ -1,5 +1,4 @@
|
|||||||
README.md
|
README.md
|
||||||
README.md
|
|
||||||
lib/Models/ApiResponse.cpp
|
lib/Models/ApiResponse.cpp
|
||||||
lib/Models/ApiResponse.h
|
lib/Models/ApiResponse.h
|
||||||
lib/Models/Category.cpp
|
lib/Models/Category.cpp
|
||||||
@ -14,11 +13,11 @@ lib/Models/Tag.cpp
|
|||||||
lib/Models/Tag.h
|
lib/Models/Tag.h
|
||||||
lib/Models/User.cpp
|
lib/Models/User.cpp
|
||||||
lib/Models/User.h
|
lib/Models/User.h
|
||||||
lib/service/AbstractService.cpp
|
|
||||||
lib/service/AbstractService.h
|
|
||||||
lib/service/PetApi.cpp
|
lib/service/PetApi.cpp
|
||||||
lib/service/PetApi.h
|
lib/service/PetApi.h
|
||||||
lib/service/Response.h
|
lib/service/Response.h
|
||||||
|
lib/service/Service.cpp
|
||||||
|
lib/service/Service.h
|
||||||
lib/service/StoreApi.cpp
|
lib/service/StoreApi.cpp
|
||||||
lib/service/StoreApi.h
|
lib/service/StoreApi.h
|
||||||
lib/service/UserApi.cpp
|
lib/service/UserApi.cpp
|
||||||
|
@ -1,8 +0,0 @@
|
|||||||
#include "AbstractService.h"
|
|
||||||
#include "Arduino.h"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void Tiny::AbstractService::begin(std::string url){
|
|
||||||
http.begin(String(url.c_str()), test_root_ca); //HTTPS connection
|
|
||||||
}
|
|
@ -1,28 +0,0 @@
|
|||||||
#ifndef TINY_CPP_CLIENT_ABSTRACTSERVICE_H_
|
|
||||||
#define TINY_CPP_CLIENT_ABSTRACTSERVICE_H_
|
|
||||||
|
|
||||||
#include "HTTPClient.h"
|
|
||||||
#include "Response.h"
|
|
||||||
namespace Tiny {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class
|
|
||||||
* Generated with openapi::tiny-cpp-client
|
|
||||||
*/
|
|
||||||
class AbstractService {
|
|
||||||
public:
|
|
||||||
HTTPClient http;
|
|
||||||
std::string basepath = "https://petstore3.swagger.io/api/v3"; // TODO: change to your url
|
|
||||||
|
|
||||||
void begin(std::string url);
|
|
||||||
|
|
||||||
// Go and comment out a certificate in root.cert, if you get an error here
|
|
||||||
// Certificate from file
|
|
||||||
const char* test_root_ca =
|
|
||||||
#include "../../root.cert"
|
|
||||||
;
|
|
||||||
|
|
||||||
}; // end class
|
|
||||||
}// namespace Tinyclient
|
|
||||||
|
|
||||||
#endif /* TINY_CPP_CLIENT_ABSTRACTSERVICE_H_ */
|
|
@ -15,31 +15,34 @@ using namespace Tiny;
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
std::string url = basepath + "/pet"; //
|
std::string url = basepath + "/pet"; //
|
||||||
// Query |
|
|
||||||
|
|
||||||
// Headers |
|
// Headers |
|
||||||
|
|
||||||
|
// Query |
|
||||||
|
|
||||||
// Form |
|
// Form |
|
||||||
// Body | pet
|
addHeader("Content-Type", "application/json");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
begin(url);
|
|
||||||
|
|
||||||
std::string payload = "";
|
std::string payload = "";
|
||||||
// Send Request
|
// Send Request
|
||||||
// METHOD | POST
|
// METHOD | POST
|
||||||
http.addHeader("Content-Type", "application/json");
|
// Body | pet
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
payload = pet.toJson().dump();
|
payload = pet.toJson().dump();
|
||||||
|
|
||||||
int httpCode = http.sendRequest("POST", reinterpret_cast<uint8_t*>(&payload[0]), payload.length());
|
int httpCode = sendRequest(url, "POST", reinterpret_cast<uint8_t*>(&payload[0]), payload.length());
|
||||||
|
|
||||||
// Handle Request
|
// Handle Request
|
||||||
String output = http.getString();
|
String output = getResponseBody();
|
||||||
std::string output_string = output.c_str();
|
std::string output_string = output.c_str();
|
||||||
|
|
||||||
http.end();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -64,10 +67,16 @@ using namespace Tiny;
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
std::string url = basepath + "/pet/{petId}"; //petId
|
std::string url = basepath + "/pet/{petId}"; //petId
|
||||||
// Query |
|
|
||||||
|
|
||||||
// Headers | apiKey
|
// Headers | apiKey
|
||||||
|
addHeader("api_key",apiKey);
|
||||||
|
|
||||||
|
// Query |
|
||||||
|
|
||||||
// Form |
|
// Form |
|
||||||
// Body |
|
|
||||||
|
|
||||||
|
|
||||||
std::string s_petId("{");
|
std::string s_petId("{");
|
||||||
s_petId.append("petId");
|
s_petId.append("petId");
|
||||||
@ -78,19 +87,17 @@ using namespace Tiny;
|
|||||||
url.erase(pos, s_petId.length());
|
url.erase(pos, s_petId.length());
|
||||||
url.insert(pos, stringify(petId));
|
url.insert(pos, stringify(petId));
|
||||||
|
|
||||||
begin(url);
|
|
||||||
|
|
||||||
std::string payload = "";
|
std::string payload = "";
|
||||||
// Send Request
|
// Send Request
|
||||||
// METHOD | DELETE
|
// METHOD | DELETE
|
||||||
int httpCode = http.sendRequest("DELETE", reinterpret_cast<uint8_t*>(&payload[0]), payload.length());
|
// Body |
|
||||||
|
int httpCode = sendRequest(url, "DELETE", reinterpret_cast<uint8_t*>(&payload[0]), payload.length());
|
||||||
|
|
||||||
// Handle Request
|
// Handle Request
|
||||||
String output = http.getString();
|
String output = getResponseBody();
|
||||||
std::string output_string = output.c_str();
|
std::string output_string = output.c_str();
|
||||||
|
|
||||||
http.end();
|
|
||||||
|
|
||||||
|
|
||||||
Response<String> response(output, httpCode);
|
Response<String> response(output, httpCode);
|
||||||
return response;
|
return response;
|
||||||
@ -107,25 +114,31 @@ using namespace Tiny;
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
std::string url = basepath + "/pet/findByStatus"; //
|
std::string url = basepath + "/pet/findByStatus"; //
|
||||||
// Query | status
|
|
||||||
|
|
||||||
// Headers |
|
// Headers |
|
||||||
|
|
||||||
|
// Query | status
|
||||||
|
for (auto &x : status){
|
||||||
|
addQueryParam("status", std::string(x));
|
||||||
|
}
|
||||||
|
|
||||||
// Form |
|
// Form |
|
||||||
// Body |
|
|
||||||
|
|
||||||
|
|
||||||
begin(url);
|
|
||||||
|
|
||||||
|
|
||||||
std::string payload = "";
|
std::string payload = "";
|
||||||
// Send Request
|
// Send Request
|
||||||
// METHOD | GET
|
// METHOD | GET
|
||||||
int httpCode = http.sendRequest("GET", reinterpret_cast<uint8_t*>(&payload[0]), payload.length());
|
// Body |
|
||||||
|
int httpCode = sendRequest(url, "GET", reinterpret_cast<uint8_t*>(&payload[0]), payload.length());
|
||||||
|
|
||||||
// Handle Request
|
// Handle Request
|
||||||
String output = http.getString();
|
String output = getResponseBody();
|
||||||
std::string output_string = output.c_str();
|
std::string output_string = output.c_str();
|
||||||
|
|
||||||
http.end();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
std::list<Pet> obj = std::list<Pet>();
|
std::list<Pet> obj = std::list<Pet>();
|
||||||
@ -167,25 +180,31 @@ using namespace Tiny;
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
std::string url = basepath + "/pet/findByTags"; //
|
std::string url = basepath + "/pet/findByTags"; //
|
||||||
// Query | tags
|
|
||||||
|
|
||||||
// Headers |
|
// Headers |
|
||||||
|
|
||||||
|
// Query | tags
|
||||||
|
for (auto &x : tags){
|
||||||
|
addQueryParam("tags", std::string(x));
|
||||||
|
}
|
||||||
|
|
||||||
// Form |
|
// Form |
|
||||||
// Body |
|
|
||||||
|
|
||||||
|
|
||||||
begin(url);
|
|
||||||
|
|
||||||
|
|
||||||
std::string payload = "";
|
std::string payload = "";
|
||||||
// Send Request
|
// Send Request
|
||||||
// METHOD | GET
|
// METHOD | GET
|
||||||
int httpCode = http.sendRequest("GET", reinterpret_cast<uint8_t*>(&payload[0]), payload.length());
|
// Body |
|
||||||
|
int httpCode = sendRequest(url, "GET", reinterpret_cast<uint8_t*>(&payload[0]), payload.length());
|
||||||
|
|
||||||
// Handle Request
|
// Handle Request
|
||||||
String output = http.getString();
|
String output = getResponseBody();
|
||||||
std::string output_string = output.c_str();
|
std::string output_string = output.c_str();
|
||||||
|
|
||||||
http.end();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
std::list<Pet> obj = std::list<Pet>();
|
std::list<Pet> obj = std::list<Pet>();
|
||||||
@ -227,10 +246,15 @@ using namespace Tiny;
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
std::string url = basepath + "/pet/{petId}"; //petId
|
std::string url = basepath + "/pet/{petId}"; //petId
|
||||||
// Query |
|
|
||||||
|
|
||||||
// Headers |
|
// Headers |
|
||||||
|
|
||||||
|
// Query |
|
||||||
|
|
||||||
// Form |
|
// Form |
|
||||||
// Body |
|
|
||||||
|
|
||||||
|
|
||||||
std::string s_petId("{");
|
std::string s_petId("{");
|
||||||
s_petId.append("petId");
|
s_petId.append("petId");
|
||||||
@ -241,19 +265,17 @@ using namespace Tiny;
|
|||||||
url.erase(pos, s_petId.length());
|
url.erase(pos, s_petId.length());
|
||||||
url.insert(pos, stringify(petId));
|
url.insert(pos, stringify(petId));
|
||||||
|
|
||||||
begin(url);
|
|
||||||
|
|
||||||
std::string payload = "";
|
std::string payload = "";
|
||||||
// Send Request
|
// Send Request
|
||||||
// METHOD | GET
|
// METHOD | GET
|
||||||
int httpCode = http.sendRequest("GET", reinterpret_cast<uint8_t*>(&payload[0]), payload.length());
|
// Body |
|
||||||
|
int httpCode = sendRequest(url, "GET", reinterpret_cast<uint8_t*>(&payload[0]), payload.length());
|
||||||
|
|
||||||
// Handle Request
|
// Handle Request
|
||||||
String output = http.getString();
|
String output = getResponseBody();
|
||||||
std::string output_string = output.c_str();
|
std::string output_string = output.c_str();
|
||||||
|
|
||||||
http.end();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -275,31 +297,34 @@ using namespace Tiny;
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
std::string url = basepath + "/pet"; //
|
std::string url = basepath + "/pet"; //
|
||||||
// Query |
|
|
||||||
|
|
||||||
// Headers |
|
// Headers |
|
||||||
|
|
||||||
|
// Query |
|
||||||
|
|
||||||
// Form |
|
// Form |
|
||||||
// Body | pet
|
addHeader("Content-Type", "application/json");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
begin(url);
|
|
||||||
|
|
||||||
std::string payload = "";
|
std::string payload = "";
|
||||||
// Send Request
|
// Send Request
|
||||||
// METHOD | PUT
|
// METHOD | PUT
|
||||||
http.addHeader("Content-Type", "application/json");
|
// Body | pet
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
payload = pet.toJson().dump();
|
payload = pet.toJson().dump();
|
||||||
|
|
||||||
int httpCode = http.sendRequest("PUT", reinterpret_cast<uint8_t*>(&payload[0]), payload.length());
|
int httpCode = sendRequest(url, "PUT", reinterpret_cast<uint8_t*>(&payload[0]), payload.length());
|
||||||
|
|
||||||
// Handle Request
|
// Handle Request
|
||||||
String output = http.getString();
|
String output = getResponseBody();
|
||||||
std::string output_string = output.c_str();
|
std::string output_string = output.c_str();
|
||||||
|
|
||||||
http.end();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -327,10 +352,18 @@ using namespace Tiny;
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
std::string url = basepath + "/pet/{petId}"; //petId
|
std::string url = basepath + "/pet/{petId}"; //petId
|
||||||
// Query |
|
|
||||||
|
|
||||||
// Headers |
|
// Headers |
|
||||||
|
|
||||||
|
// Query |
|
||||||
|
|
||||||
// Form | name status
|
// Form | name status
|
||||||
// Body |
|
addHeader("Content-Type", "application/x-www-form-urlencoded");
|
||||||
|
|
||||||
|
addFormParam("name",name);
|
||||||
|
addFormParam("status",status);
|
||||||
|
|
||||||
|
|
||||||
std::string s_petId("{");
|
std::string s_petId("{");
|
||||||
s_petId.append("petId");
|
s_petId.append("petId");
|
||||||
@ -341,19 +374,17 @@ using namespace Tiny;
|
|||||||
url.erase(pos, s_petId.length());
|
url.erase(pos, s_petId.length());
|
||||||
url.insert(pos, stringify(petId));
|
url.insert(pos, stringify(petId));
|
||||||
|
|
||||||
begin(url);
|
|
||||||
|
|
||||||
std::string payload = "";
|
std::string payload = "";
|
||||||
// Send Request
|
// Send Request
|
||||||
// METHOD | POST
|
// METHOD | POST
|
||||||
int httpCode = http.sendRequest("POST", reinterpret_cast<uint8_t*>(&payload[0]), payload.length());
|
// Body |
|
||||||
|
int httpCode = sendRequest(url, "POST", reinterpret_cast<uint8_t*>(&payload[0]), payload.length());
|
||||||
|
|
||||||
// Handle Request
|
// Handle Request
|
||||||
String output = http.getString();
|
String output = getResponseBody();
|
||||||
std::string output_string = output.c_str();
|
std::string output_string = output.c_str();
|
||||||
|
|
||||||
http.end();
|
|
||||||
|
|
||||||
|
|
||||||
Response<String> response(output, httpCode);
|
Response<String> response(output, httpCode);
|
||||||
return response;
|
return response;
|
||||||
@ -376,10 +407,18 @@ using namespace Tiny;
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
std::string url = basepath + "/pet/{petId}/uploadImage"; //petId
|
std::string url = basepath + "/pet/{petId}/uploadImage"; //petId
|
||||||
// Query |
|
|
||||||
|
|
||||||
// Headers |
|
// Headers |
|
||||||
|
|
||||||
|
// Query |
|
||||||
|
|
||||||
// Form | additionalMetadata file
|
// Form | additionalMetadata file
|
||||||
// Body |
|
addHeader("Content-Type", "application/x-www-form-urlencoded");
|
||||||
|
|
||||||
|
addFormParam("additionalMetadata",additionalMetadata);
|
||||||
|
addFormParam("file",file);
|
||||||
|
|
||||||
|
|
||||||
std::string s_petId("{");
|
std::string s_petId("{");
|
||||||
s_petId.append("petId");
|
s_petId.append("petId");
|
||||||
@ -390,19 +429,17 @@ using namespace Tiny;
|
|||||||
url.erase(pos, s_petId.length());
|
url.erase(pos, s_petId.length());
|
||||||
url.insert(pos, stringify(petId));
|
url.insert(pos, stringify(petId));
|
||||||
|
|
||||||
begin(url);
|
|
||||||
|
|
||||||
std::string payload = "";
|
std::string payload = "";
|
||||||
// Send Request
|
// Send Request
|
||||||
// METHOD | POST
|
// METHOD | POST
|
||||||
int httpCode = http.sendRequest("POST", reinterpret_cast<uint8_t*>(&payload[0]), payload.length());
|
// Body |
|
||||||
|
int httpCode = sendRequest(url, "POST", reinterpret_cast<uint8_t*>(&payload[0]), payload.length());
|
||||||
|
|
||||||
// Handle Request
|
// Handle Request
|
||||||
String output = http.getString();
|
String output = getResponseBody();
|
||||||
std::string output_string = output.c_str();
|
std::string output_string = output.c_str();
|
||||||
|
|
||||||
http.end();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
#include "Response.h"
|
#include "Response.h"
|
||||||
#include "Arduino.h"
|
#include "Arduino.h"
|
||||||
#include "AbstractService.h"
|
#include "Service.h"
|
||||||
#include "Helpers.h"
|
#include "Helpers.h"
|
||||||
#include <list>
|
#include <list>
|
||||||
|
|
||||||
@ -18,7 +18,7 @@ namespace Tiny {
|
|||||||
* Generated with openapi::tiny-cpp-client
|
* Generated with openapi::tiny-cpp-client
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class PetApi : public AbstractService {
|
class PetApi : public Service {
|
||||||
public:
|
public:
|
||||||
PetApi() = default;
|
PetApi() = default;
|
||||||
|
|
||||||
|
64
samples/client/petstore/cpp-tiny/lib/service/Service.cpp
Normal file
64
samples/client/petstore/cpp-tiny/lib/service/Service.cpp
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
#include "Service.h"
|
||||||
|
#include "Arduino.h"
|
||||||
|
|
||||||
|
void Tiny::Service::begin(std::string url){
|
||||||
|
http.begin(String(url.c_str()), test_root_ca); //HTTPS connection
|
||||||
|
|
||||||
|
|
||||||
|
// reset params
|
||||||
|
queryParams.begin();
|
||||||
|
formParams.begin();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Tiny::Service::addHeader(std::string key, std::string value){
|
||||||
|
http.addHeader(String(key.c_str()), String(value.c_str()));
|
||||||
|
}
|
||||||
|
|
||||||
|
void Tiny::Service::addQueryParam(std::string key, std::string value){
|
||||||
|
formParams.push_back(std::make_tuple(key, value));
|
||||||
|
}
|
||||||
|
|
||||||
|
void Tiny::Service::addFormParam(std::string key, std::string value){
|
||||||
|
formParams.push_back(std::make_tuple(key, value));
|
||||||
|
}
|
||||||
|
|
||||||
|
int Tiny::Service::sendRequest(std::string url, const char * type, uint8_t * payload, size_t size){
|
||||||
|
this->url = url;
|
||||||
|
prepareRequest();
|
||||||
|
|
||||||
|
begin(this->url);
|
||||||
|
|
||||||
|
int httpCode = http.sendRequest(type, payload, size);
|
||||||
|
return httpCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Tiny::Service::prepareRequest(){
|
||||||
|
if (!queryParams.empty()){
|
||||||
|
this->url += "?" + encodeKeyValueTuple(this->queryParams);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!formParams.empty()){
|
||||||
|
this->payload = encodeKeyValueTuple(this->formParams);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string Tiny::Service::encodeKeyValueTuple(std::list<std::tuple<std::string, std::string>> params){
|
||||||
|
std::string encoded = "";
|
||||||
|
for (auto const& tuple : params) {
|
||||||
|
encoded += std::get<0>(tuple) + "=" + std::get<1>(tuple) + "&";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remove last '&' char from url
|
||||||
|
if (! encoded.empty())
|
||||||
|
encoded.pop_back();
|
||||||
|
|
||||||
|
return encoded;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
String Tiny::Service::getResponseBody(){
|
||||||
|
String respBody = http.getString();
|
||||||
|
http.end();
|
||||||
|
return respBody;
|
||||||
|
}
|
||||||
|
|
43
samples/client/petstore/cpp-tiny/lib/service/Service.h
Normal file
43
samples/client/petstore/cpp-tiny/lib/service/Service.h
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
#ifndef TINY_CPP_CLIENT_ABSTRACTSERVICE_H_
|
||||||
|
#define TINY_CPP_CLIENT_ABSTRACTSERVICE_H_
|
||||||
|
|
||||||
|
#include "HTTPClient.h"
|
||||||
|
#include "Response.h"
|
||||||
|
#include <list>
|
||||||
|
namespace Tiny {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class
|
||||||
|
* Generated with openapi::tiny-cpp-client
|
||||||
|
*/
|
||||||
|
class Service {
|
||||||
|
public:
|
||||||
|
HTTPClient http;
|
||||||
|
std::string basepath = "https://petstore3.swagger.io/api/v3"; // TODO: change to your url
|
||||||
|
std::string url = "";
|
||||||
|
std::string payload = "";
|
||||||
|
std::list<std::tuple<std::string, std::string>> queryParams;
|
||||||
|
std::list<std::tuple<std::string, std::string>> formParams;
|
||||||
|
|
||||||
|
int sendRequest(std::string url, const char * type, uint8_t * payload, size_t size);
|
||||||
|
String getResponseBody();
|
||||||
|
|
||||||
|
void addQueryParam(std::string key, std::string value);
|
||||||
|
void addFormParam(std::string key, std::string value);
|
||||||
|
void addHeader(std::string key, std::string value);
|
||||||
|
|
||||||
|
// Go and comment out a certificate in root.cert, if you get an error here
|
||||||
|
// Certificate from file
|
||||||
|
const char* test_root_ca =
|
||||||
|
#include "../../root.cert"
|
||||||
|
;
|
||||||
|
|
||||||
|
private:
|
||||||
|
void begin(std::string url);
|
||||||
|
void prepareRequest();
|
||||||
|
std::string encodeKeyValueTuple(std::list<std::tuple<std::string, std::string>> params);
|
||||||
|
|
||||||
|
}; // end class
|
||||||
|
}// namespace Tinyclient
|
||||||
|
|
||||||
|
#endif /* TINY_CPP_CLIENT_ABSTRACTSERVICE_H_ */
|
@ -15,10 +15,15 @@ using namespace Tiny;
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
std::string url = basepath + "/store/order/{orderId}"; //orderId
|
std::string url = basepath + "/store/order/{orderId}"; //orderId
|
||||||
// Query |
|
|
||||||
|
|
||||||
// Headers |
|
// Headers |
|
||||||
|
|
||||||
|
// Query |
|
||||||
|
|
||||||
// Form |
|
// Form |
|
||||||
// Body |
|
|
||||||
|
|
||||||
|
|
||||||
std::string s_orderId("{");
|
std::string s_orderId("{");
|
||||||
s_orderId.append("orderId");
|
s_orderId.append("orderId");
|
||||||
@ -29,19 +34,17 @@ using namespace Tiny;
|
|||||||
url.erase(pos, s_orderId.length());
|
url.erase(pos, s_orderId.length());
|
||||||
url.insert(pos, stringify(orderId));
|
url.insert(pos, stringify(orderId));
|
||||||
|
|
||||||
begin(url);
|
|
||||||
|
|
||||||
std::string payload = "";
|
std::string payload = "";
|
||||||
// Send Request
|
// Send Request
|
||||||
// METHOD | DELETE
|
// METHOD | DELETE
|
||||||
int httpCode = http.sendRequest("DELETE", reinterpret_cast<uint8_t*>(&payload[0]), payload.length());
|
// Body |
|
||||||
|
int httpCode = sendRequest(url, "DELETE", reinterpret_cast<uint8_t*>(&payload[0]), payload.length());
|
||||||
|
|
||||||
// Handle Request
|
// Handle Request
|
||||||
String output = http.getString();
|
String output = getResponseBody();
|
||||||
std::string output_string = output.c_str();
|
std::string output_string = output.c_str();
|
||||||
|
|
||||||
http.end();
|
|
||||||
|
|
||||||
|
|
||||||
Response<String> response(output, httpCode);
|
Response<String> response(output, httpCode);
|
||||||
return response;
|
return response;
|
||||||
@ -55,25 +58,28 @@ using namespace Tiny;
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
std::string url = basepath + "/store/inventory"; //
|
std::string url = basepath + "/store/inventory"; //
|
||||||
// Query |
|
|
||||||
|
|
||||||
// Headers |
|
// Headers |
|
||||||
|
|
||||||
|
// Query |
|
||||||
|
|
||||||
// Form |
|
// Form |
|
||||||
// Body |
|
|
||||||
|
|
||||||
|
|
||||||
begin(url);
|
|
||||||
|
|
||||||
|
|
||||||
std::string payload = "";
|
std::string payload = "";
|
||||||
// Send Request
|
// Send Request
|
||||||
// METHOD | GET
|
// METHOD | GET
|
||||||
int httpCode = http.sendRequest("GET", reinterpret_cast<uint8_t*>(&payload[0]), payload.length());
|
// Body |
|
||||||
|
int httpCode = sendRequest(url, "GET", reinterpret_cast<uint8_t*>(&payload[0]), payload.length());
|
||||||
|
|
||||||
// Handle Request
|
// Handle Request
|
||||||
String output = http.getString();
|
String output = getResponseBody();
|
||||||
std::string output_string = output.c_str();
|
std::string output_string = output.c_str();
|
||||||
|
|
||||||
http.end();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//TODO: Implement map logic here
|
//TODO: Implement map logic here
|
||||||
@ -97,10 +103,15 @@ using namespace Tiny;
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
std::string url = basepath + "/store/order/{orderId}"; //orderId
|
std::string url = basepath + "/store/order/{orderId}"; //orderId
|
||||||
// Query |
|
|
||||||
|
|
||||||
// Headers |
|
// Headers |
|
||||||
|
|
||||||
|
// Query |
|
||||||
|
|
||||||
// Form |
|
// Form |
|
||||||
// Body |
|
|
||||||
|
|
||||||
|
|
||||||
std::string s_orderId("{");
|
std::string s_orderId("{");
|
||||||
s_orderId.append("orderId");
|
s_orderId.append("orderId");
|
||||||
@ -111,19 +122,17 @@ using namespace Tiny;
|
|||||||
url.erase(pos, s_orderId.length());
|
url.erase(pos, s_orderId.length());
|
||||||
url.insert(pos, stringify(orderId));
|
url.insert(pos, stringify(orderId));
|
||||||
|
|
||||||
begin(url);
|
|
||||||
|
|
||||||
std::string payload = "";
|
std::string payload = "";
|
||||||
// Send Request
|
// Send Request
|
||||||
// METHOD | GET
|
// METHOD | GET
|
||||||
int httpCode = http.sendRequest("GET", reinterpret_cast<uint8_t*>(&payload[0]), payload.length());
|
// Body |
|
||||||
|
int httpCode = sendRequest(url, "GET", reinterpret_cast<uint8_t*>(&payload[0]), payload.length());
|
||||||
|
|
||||||
// Handle Request
|
// Handle Request
|
||||||
String output = http.getString();
|
String output = getResponseBody();
|
||||||
std::string output_string = output.c_str();
|
std::string output_string = output.c_str();
|
||||||
|
|
||||||
http.end();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -145,31 +154,34 @@ using namespace Tiny;
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
std::string url = basepath + "/store/order"; //
|
std::string url = basepath + "/store/order"; //
|
||||||
// Query |
|
|
||||||
|
|
||||||
// Headers |
|
// Headers |
|
||||||
|
|
||||||
|
// Query |
|
||||||
|
|
||||||
// Form |
|
// Form |
|
||||||
// Body | order
|
addHeader("Content-Type", "application/json");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
begin(url);
|
|
||||||
|
|
||||||
std::string payload = "";
|
std::string payload = "";
|
||||||
// Send Request
|
// Send Request
|
||||||
// METHOD | POST
|
// METHOD | POST
|
||||||
http.addHeader("Content-Type", "application/json");
|
// Body | order
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
payload = order.toJson().dump();
|
payload = order.toJson().dump();
|
||||||
|
|
||||||
int httpCode = http.sendRequest("POST", reinterpret_cast<uint8_t*>(&payload[0]), payload.length());
|
int httpCode = sendRequest(url, "POST", reinterpret_cast<uint8_t*>(&payload[0]), payload.length());
|
||||||
|
|
||||||
// Handle Request
|
// Handle Request
|
||||||
String output = http.getString();
|
String output = getResponseBody();
|
||||||
std::string output_string = output.c_str();
|
std::string output_string = output.c_str();
|
||||||
|
|
||||||
http.end();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
#include "Response.h"
|
#include "Response.h"
|
||||||
#include "Arduino.h"
|
#include "Arduino.h"
|
||||||
#include "AbstractService.h"
|
#include "Service.h"
|
||||||
#include "Helpers.h"
|
#include "Helpers.h"
|
||||||
#include <list>
|
#include <list>
|
||||||
|
|
||||||
@ -18,7 +18,7 @@ namespace Tiny {
|
|||||||
* Generated with openapi::tiny-cpp-client
|
* Generated with openapi::tiny-cpp-client
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class StoreApi : public AbstractService {
|
class StoreApi : public Service {
|
||||||
public:
|
public:
|
||||||
StoreApi() = default;
|
StoreApi() = default;
|
||||||
|
|
||||||
|
@ -15,31 +15,34 @@ using namespace Tiny;
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
std::string url = basepath + "/user"; //
|
std::string url = basepath + "/user"; //
|
||||||
// Query |
|
|
||||||
|
|
||||||
// Headers |
|
// Headers |
|
||||||
|
|
||||||
|
// Query |
|
||||||
|
|
||||||
// Form |
|
// Form |
|
||||||
// Body | user
|
addHeader("Content-Type", "application/json");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
begin(url);
|
|
||||||
|
|
||||||
std::string payload = "";
|
std::string payload = "";
|
||||||
// Send Request
|
// Send Request
|
||||||
// METHOD | POST
|
// METHOD | POST
|
||||||
http.addHeader("Content-Type", "application/json");
|
// Body | user
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
payload = user.toJson().dump();
|
payload = user.toJson().dump();
|
||||||
|
|
||||||
int httpCode = http.sendRequest("POST", reinterpret_cast<uint8_t*>(&payload[0]), payload.length());
|
int httpCode = sendRequest(url, "POST", reinterpret_cast<uint8_t*>(&payload[0]), payload.length());
|
||||||
|
|
||||||
// Handle Request
|
// Handle Request
|
||||||
String output = http.getString();
|
String output = getResponseBody();
|
||||||
std::string output_string = output.c_str();
|
std::string output_string = output.c_str();
|
||||||
|
|
||||||
http.end();
|
|
||||||
|
|
||||||
|
|
||||||
Response<String> response(output, httpCode);
|
Response<String> response(output, httpCode);
|
||||||
return response;
|
return response;
|
||||||
@ -56,18 +59,23 @@ using namespace Tiny;
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
std::string url = basepath + "/user/createWithArray"; //
|
std::string url = basepath + "/user/createWithArray"; //
|
||||||
// Query |
|
|
||||||
|
|
||||||
// Headers |
|
// Headers |
|
||||||
|
|
||||||
|
// Query |
|
||||||
|
|
||||||
// Form |
|
// Form |
|
||||||
// Body | user
|
addHeader("Content-Type", "application/json");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
begin(url);
|
|
||||||
|
|
||||||
std::string payload = "";
|
std::string payload = "";
|
||||||
// Send Request
|
// Send Request
|
||||||
// METHOD | POST
|
// METHOD | POST
|
||||||
http.addHeader("Content-Type", "application/json");
|
// Body | user
|
||||||
|
|
||||||
|
|
||||||
bourne::json tmp_arr = bourne::json::array();
|
bourne::json tmp_arr = bourne::json::array();
|
||||||
@ -80,14 +88,12 @@ using namespace Tiny;
|
|||||||
payload = tmp_arr.dump();
|
payload = tmp_arr.dump();
|
||||||
|
|
||||||
|
|
||||||
int httpCode = http.sendRequest("POST", reinterpret_cast<uint8_t*>(&payload[0]), payload.length());
|
int httpCode = sendRequest(url, "POST", reinterpret_cast<uint8_t*>(&payload[0]), payload.length());
|
||||||
|
|
||||||
// Handle Request
|
// Handle Request
|
||||||
String output = http.getString();
|
String output = getResponseBody();
|
||||||
std::string output_string = output.c_str();
|
std::string output_string = output.c_str();
|
||||||
|
|
||||||
http.end();
|
|
||||||
|
|
||||||
|
|
||||||
Response<String> response(output, httpCode);
|
Response<String> response(output, httpCode);
|
||||||
return response;
|
return response;
|
||||||
@ -104,18 +110,23 @@ using namespace Tiny;
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
std::string url = basepath + "/user/createWithList"; //
|
std::string url = basepath + "/user/createWithList"; //
|
||||||
// Query |
|
|
||||||
|
|
||||||
// Headers |
|
// Headers |
|
||||||
|
|
||||||
|
// Query |
|
||||||
|
|
||||||
// Form |
|
// Form |
|
||||||
// Body | user
|
addHeader("Content-Type", "application/json");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
begin(url);
|
|
||||||
|
|
||||||
std::string payload = "";
|
std::string payload = "";
|
||||||
// Send Request
|
// Send Request
|
||||||
// METHOD | POST
|
// METHOD | POST
|
||||||
http.addHeader("Content-Type", "application/json");
|
// Body | user
|
||||||
|
|
||||||
|
|
||||||
bourne::json tmp_arr = bourne::json::array();
|
bourne::json tmp_arr = bourne::json::array();
|
||||||
@ -128,14 +139,12 @@ using namespace Tiny;
|
|||||||
payload = tmp_arr.dump();
|
payload = tmp_arr.dump();
|
||||||
|
|
||||||
|
|
||||||
int httpCode = http.sendRequest("POST", reinterpret_cast<uint8_t*>(&payload[0]), payload.length());
|
int httpCode = sendRequest(url, "POST", reinterpret_cast<uint8_t*>(&payload[0]), payload.length());
|
||||||
|
|
||||||
// Handle Request
|
// Handle Request
|
||||||
String output = http.getString();
|
String output = getResponseBody();
|
||||||
std::string output_string = output.c_str();
|
std::string output_string = output.c_str();
|
||||||
|
|
||||||
http.end();
|
|
||||||
|
|
||||||
|
|
||||||
Response<String> response(output, httpCode);
|
Response<String> response(output, httpCode);
|
||||||
return response;
|
return response;
|
||||||
@ -152,10 +161,15 @@ using namespace Tiny;
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
std::string url = basepath + "/user/{username}"; //username
|
std::string url = basepath + "/user/{username}"; //username
|
||||||
// Query |
|
|
||||||
|
|
||||||
// Headers |
|
// Headers |
|
||||||
|
|
||||||
|
// Query |
|
||||||
|
|
||||||
// Form |
|
// Form |
|
||||||
// Body |
|
|
||||||
|
|
||||||
|
|
||||||
std::string s_username("{");
|
std::string s_username("{");
|
||||||
s_username.append("username");
|
s_username.append("username");
|
||||||
@ -166,19 +180,17 @@ using namespace Tiny;
|
|||||||
url.erase(pos, s_username.length());
|
url.erase(pos, s_username.length());
|
||||||
url.insert(pos, stringify(username));
|
url.insert(pos, stringify(username));
|
||||||
|
|
||||||
begin(url);
|
|
||||||
|
|
||||||
std::string payload = "";
|
std::string payload = "";
|
||||||
// Send Request
|
// Send Request
|
||||||
// METHOD | DELETE
|
// METHOD | DELETE
|
||||||
int httpCode = http.sendRequest("DELETE", reinterpret_cast<uint8_t*>(&payload[0]), payload.length());
|
// Body |
|
||||||
|
int httpCode = sendRequest(url, "DELETE", reinterpret_cast<uint8_t*>(&payload[0]), payload.length());
|
||||||
|
|
||||||
// Handle Request
|
// Handle Request
|
||||||
String output = http.getString();
|
String output = getResponseBody();
|
||||||
std::string output_string = output.c_str();
|
std::string output_string = output.c_str();
|
||||||
|
|
||||||
http.end();
|
|
||||||
|
|
||||||
|
|
||||||
Response<String> response(output, httpCode);
|
Response<String> response(output, httpCode);
|
||||||
return response;
|
return response;
|
||||||
@ -195,10 +207,15 @@ using namespace Tiny;
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
std::string url = basepath + "/user/{username}"; //username
|
std::string url = basepath + "/user/{username}"; //username
|
||||||
// Query |
|
|
||||||
|
|
||||||
// Headers |
|
// Headers |
|
||||||
|
|
||||||
|
// Query |
|
||||||
|
|
||||||
// Form |
|
// Form |
|
||||||
// Body |
|
|
||||||
|
|
||||||
|
|
||||||
std::string s_username("{");
|
std::string s_username("{");
|
||||||
s_username.append("username");
|
s_username.append("username");
|
||||||
@ -209,19 +226,17 @@ using namespace Tiny;
|
|||||||
url.erase(pos, s_username.length());
|
url.erase(pos, s_username.length());
|
||||||
url.insert(pos, stringify(username));
|
url.insert(pos, stringify(username));
|
||||||
|
|
||||||
begin(url);
|
|
||||||
|
|
||||||
std::string payload = "";
|
std::string payload = "";
|
||||||
// Send Request
|
// Send Request
|
||||||
// METHOD | GET
|
// METHOD | GET
|
||||||
int httpCode = http.sendRequest("GET", reinterpret_cast<uint8_t*>(&payload[0]), payload.length());
|
// Body |
|
||||||
|
int httpCode = sendRequest(url, "GET", reinterpret_cast<uint8_t*>(&payload[0]), payload.length());
|
||||||
|
|
||||||
// Handle Request
|
// Handle Request
|
||||||
String output = http.getString();
|
String output = getResponseBody();
|
||||||
std::string output_string = output.c_str();
|
std::string output_string = output.c_str();
|
||||||
|
|
||||||
http.end();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -246,25 +261,30 @@ using namespace Tiny;
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
std::string url = basepath + "/user/login"; //
|
std::string url = basepath + "/user/login"; //
|
||||||
// Query | username password
|
|
||||||
|
|
||||||
// Headers |
|
// Headers |
|
||||||
|
|
||||||
|
// Query | username password
|
||||||
|
addQueryParam("username",username);
|
||||||
|
addQueryParam("password",password);
|
||||||
|
|
||||||
// Form |
|
// Form |
|
||||||
// Body |
|
|
||||||
|
|
||||||
|
|
||||||
begin(url);
|
|
||||||
|
|
||||||
|
|
||||||
std::string payload = "";
|
std::string payload = "";
|
||||||
// Send Request
|
// Send Request
|
||||||
// METHOD | GET
|
// METHOD | GET
|
||||||
int httpCode = http.sendRequest("GET", reinterpret_cast<uint8_t*>(&payload[0]), payload.length());
|
// Body |
|
||||||
|
int httpCode = sendRequest(url, "GET", reinterpret_cast<uint8_t*>(&payload[0]), payload.length());
|
||||||
|
|
||||||
// Handle Request
|
// Handle Request
|
||||||
String output = http.getString();
|
String output = getResponseBody();
|
||||||
std::string output_string = output.c_str();
|
std::string output_string = output.c_str();
|
||||||
|
|
||||||
http.end();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
bourne::json jsonPayload(output_string);
|
bourne::json jsonPayload(output_string);
|
||||||
@ -285,25 +305,28 @@ using namespace Tiny;
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
std::string url = basepath + "/user/logout"; //
|
std::string url = basepath + "/user/logout"; //
|
||||||
// Query |
|
|
||||||
|
|
||||||
// Headers |
|
// Headers |
|
||||||
|
|
||||||
|
// Query |
|
||||||
|
|
||||||
// Form |
|
// Form |
|
||||||
// Body |
|
|
||||||
|
|
||||||
|
|
||||||
begin(url);
|
|
||||||
|
|
||||||
|
|
||||||
std::string payload = "";
|
std::string payload = "";
|
||||||
// Send Request
|
// Send Request
|
||||||
// METHOD | GET
|
// METHOD | GET
|
||||||
int httpCode = http.sendRequest("GET", reinterpret_cast<uint8_t*>(&payload[0]), payload.length());
|
// Body |
|
||||||
|
int httpCode = sendRequest(url, "GET", reinterpret_cast<uint8_t*>(&payload[0]), payload.length());
|
||||||
|
|
||||||
// Handle Request
|
// Handle Request
|
||||||
String output = http.getString();
|
String output = getResponseBody();
|
||||||
std::string output_string = output.c_str();
|
std::string output_string = output.c_str();
|
||||||
|
|
||||||
http.end();
|
|
||||||
|
|
||||||
|
|
||||||
Response<String> response(output, httpCode);
|
Response<String> response(output, httpCode);
|
||||||
return response;
|
return response;
|
||||||
@ -323,10 +346,16 @@ using namespace Tiny;
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
std::string url = basepath + "/user/{username}"; //username
|
std::string url = basepath + "/user/{username}"; //username
|
||||||
// Query |
|
|
||||||
|
|
||||||
// Headers |
|
// Headers |
|
||||||
|
|
||||||
|
// Query |
|
||||||
|
|
||||||
// Form |
|
// Form |
|
||||||
// Body | user
|
addHeader("Content-Type", "application/json");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
std::string s_username("{");
|
std::string s_username("{");
|
||||||
s_username.append("username");
|
s_username.append("username");
|
||||||
@ -337,25 +366,22 @@ using namespace Tiny;
|
|||||||
url.erase(pos, s_username.length());
|
url.erase(pos, s_username.length());
|
||||||
url.insert(pos, stringify(username));
|
url.insert(pos, stringify(username));
|
||||||
|
|
||||||
begin(url);
|
|
||||||
|
|
||||||
std::string payload = "";
|
std::string payload = "";
|
||||||
// Send Request
|
// Send Request
|
||||||
// METHOD | PUT
|
// METHOD | PUT
|
||||||
http.addHeader("Content-Type", "application/json");
|
// Body | user
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
payload = user.toJson().dump();
|
payload = user.toJson().dump();
|
||||||
|
|
||||||
int httpCode = http.sendRequest("PUT", reinterpret_cast<uint8_t*>(&payload[0]), payload.length());
|
int httpCode = sendRequest(url, "PUT", reinterpret_cast<uint8_t*>(&payload[0]), payload.length());
|
||||||
|
|
||||||
// Handle Request
|
// Handle Request
|
||||||
String output = http.getString();
|
String output = getResponseBody();
|
||||||
std::string output_string = output.c_str();
|
std::string output_string = output.c_str();
|
||||||
|
|
||||||
http.end();
|
|
||||||
|
|
||||||
|
|
||||||
Response<String> response(output, httpCode);
|
Response<String> response(output, httpCode);
|
||||||
return response;
|
return response;
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
#include "Response.h"
|
#include "Response.h"
|
||||||
#include "Arduino.h"
|
#include "Arduino.h"
|
||||||
#include "AbstractService.h"
|
#include "Service.h"
|
||||||
#include "Helpers.h"
|
#include "Helpers.h"
|
||||||
#include <list>
|
#include <list>
|
||||||
|
|
||||||
@ -18,7 +18,7 @@ namespace Tiny {
|
|||||||
* Generated with openapi::tiny-cpp-client
|
* Generated with openapi::tiny-cpp-client
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class UserApi : public AbstractService {
|
class UserApi : public Service {
|
||||||
public:
|
public:
|
||||||
UserApi() = default;
|
UserApi() = default;
|
||||||
|
|
||||||
|
@ -2,6 +2,6 @@
|
|||||||
platform = espressif32
|
platform = espressif32
|
||||||
board = nodemcu-32s
|
board = nodemcu-32s
|
||||||
framework = arduino
|
framework = arduino
|
||||||
lib_deps = https://github.com/steinwurf/bourne.git
|
lib_deps = https://github.com/steinwurf/bourne.git#9.0.0
|
||||||
extra_scripts = pre_compiling_bourne.py
|
extra_scripts = pre_compiling_bourne.py
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
// Below is two examples of root certificates.
|
// Below is two examples of root certificates.
|
||||||
|
|
||||||
// Let's encrypt root certificate
|
// Let's encrypt root certificate
|
||||||
/**
|
|
||||||
"-----BEGIN CERTIFICATE-----\n" \
|
"-----BEGIN CERTIFICATE-----\n" \
|
||||||
"MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh\n" \
|
"MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh\n" \
|
||||||
"MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\n" \
|
"MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\n" \
|
||||||
@ -25,10 +25,10 @@
|
|||||||
"YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk\n" \
|
"YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk\n" \
|
||||||
"CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=\n" \
|
"CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=\n" \
|
||||||
"-----END CERTIFICATE-----\n"
|
"-----END CERTIFICATE-----\n"
|
||||||
*/
|
|
||||||
|
|
||||||
// Amazon_Root_CA_1.pem
|
// Amazon_Root_CA_1.pem
|
||||||
/**
|
|
||||||
"-----BEGIN CERTIFICATE-----\n" \
|
"-----BEGIN CERTIFICATE-----\n" \
|
||||||
"MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsF\n" \
|
"MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsF\n" \
|
||||||
"ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6\n" \
|
"ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6\n" \
|
||||||
@ -49,4 +49,5 @@
|
|||||||
"5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2xJNDd2ZhwLnoQdeXeGADbkpy\n" \
|
"5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2xJNDd2ZhwLnoQdeXeGADbkpy\n" \
|
||||||
"rqXRfboQnoZsG4q5WTP468SQvvG5\n" \
|
"rqXRfboQnoZsG4q5WTP468SQvvG5\n" \
|
||||||
"-----END CERTIFICATE-----\n" \
|
"-----END CERTIFICATE-----\n" \
|
||||||
*/
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user