forked from loafle/openapi-generator-original
[C++] Adjust the names (script, sample folder, generator) to lang option (#220)
* Rename script: qt5-petstore.sh -> cpp-qt5-petstore.sh * Rename sample folder: qt5cpp -> cpp-qt5 * Rename script: cpprest-petstore.sh -> cpp-restsdk-petstore.sh * Rename sample folder: cpprest -> cpp-restsdk * Rename generator: CppRestClientCodegen -> CppRestSdkClientCodegen * Rename script: tizen-petstore.sh -> cpp-tizen-petstore.sh * Rename sample folder: tizen -> cpp-tizen * Rename script(security): qt5cpp-petstore.sh -> cpp-qt5-petstore.sh * Rename sample folder(security): qt5cpp -> cpp-qt5 * Rename script(windows): qt5cpp-petstore.bat -> cpp-qt5-petstore.bat * Change sample folder * Rename script(windows): cpprest-petstore.bat -> cpp-restsdk-petstore.bat * Change sample folder * Rename script(windows): tizen-petstore.bat -> cpp-tizen-petstore.bat * Change sample folder * Change output folder: tizen -> cpp-tizen * Rename the scripts under bin/openapi3 cpp-restsdk is not exist under bin/openapi3 * Change sample folder
This commit is contained in:
committed by
William Cheng
parent
f65193e6fb
commit
cf657f1c7b
359
samples/client/petstore/cpp-tizen/src/NetClient.cpp
Normal file
359
samples/client/petstore/cpp-tizen/src/NetClient.cpp
Normal file
@@ -0,0 +1,359 @@
|
||||
#include "NetClient.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
NetClient::NetClient() {
|
||||
}
|
||||
|
||||
/*
|
||||
void
|
||||
NetClient::success(void (*success) (HttpResponse*, void (*cb)(void*, Error*)), void (*cb)(void*, Error*)) {
|
||||
this->successFunction = success;
|
||||
this->cb = cb;
|
||||
}
|
||||
*/
|
||||
|
||||
NetClient::~NetClient() {
|
||||
}
|
||||
|
||||
size_t WriteMemoryCallback(void *contents, size_t size, size_t nmemb, void *userp) {
|
||||
size_t realsize = size * nmemb;
|
||||
MemoryStruct_s *mem = (struct MemoryStruct_s *) userp;
|
||||
|
||||
mem->memory = (char *) realloc(mem->memory, mem->size + realsize + 1);
|
||||
if (mem->memory == NULL) {
|
||||
/* out of memory! */
|
||||
//NET_LOGE("not enough memory (realloc returned NULL)\n");
|
||||
printf("not enough memory (realloc returned NULL)\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
memcpy(&(mem->memory[mem->size]), contents, realsize);
|
||||
mem->size += realsize;
|
||||
mem->memory[mem->size] = 0;
|
||||
|
||||
return realsize;
|
||||
}
|
||||
|
||||
static void curl_error_print(CURLcode res, const char *errbuf, int line) {
|
||||
//NET_LOGD("start curl_error_print line:%d ", line);
|
||||
if (res != CURLE_OK) {
|
||||
//NET_LOGD("curl err=%d at line:%d ", res, line);
|
||||
printf("curl err=%d at line:%d ", res, line);
|
||||
size_t len = strlen(errbuf);
|
||||
if (len)
|
||||
//NET_LOGD("%s\n", errbuf);
|
||||
printf("%s\n", errbuf);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class GlobalInit {
|
||||
public:
|
||||
|
||||
GlobalInit()
|
||||
{
|
||||
CURLcode curl_res = curl_global_init(CURL_GLOBAL_ALL);
|
||||
char errbuf[CURL_ERROR_SIZE] = {0,};
|
||||
curl_error_print(curl_res, errbuf, __LINE__);
|
||||
if (curl_res != CURLE_OK) {
|
||||
printf("cannot global initialize curl");
|
||||
}
|
||||
}
|
||||
|
||||
~GlobalInit()
|
||||
{
|
||||
curl_global_cleanup();
|
||||
}
|
||||
};
|
||||
|
||||
static GlobalInit globalinit;
|
||||
|
||||
|
||||
int NetClient::easycurl(string host, string path, string method, std::map<string, string> queryParams,
|
||||
string mBody, struct curl_slist* headerList, MemoryStruct_s *p_chunk, long *code, char * errormsg) {
|
||||
|
||||
char *url = NULL;
|
||||
char *body = (char *) malloc(mBody.size() + 1);
|
||||
memcpy(body, mBody.c_str(), mBody.size() + 1);
|
||||
string uri = string(host);
|
||||
uri.append(path);
|
||||
|
||||
NetHttpMethod httpMethod;
|
||||
if (method.compare("GET") == 0)
|
||||
httpMethod = NET_HTTP_GET;
|
||||
else if (method.compare("PUT") == 0)
|
||||
httpMethod = NET_HTTP_PUT;
|
||||
else if (method.compare("POST") == 0)
|
||||
httpMethod = NET_HTTP_POST;
|
||||
else
|
||||
httpMethod = NET_HTTP_DELETE;
|
||||
|
||||
CURL *curl_handle;
|
||||
CURLcode curl_res;
|
||||
errormsg = (char*) malloc(CURL_ERROR_SIZE);
|
||||
char errbuf[CURL_ERROR_SIZE] = {0,};
|
||||
MemoryStruct_s chunk;
|
||||
int ret_val = ArtikCloud_ERROR_NONE;
|
||||
// FILE *file;
|
||||
|
||||
|
||||
printf("start NET_Utils::easycurl");
|
||||
//NET_LOGD("start NET_Utils::easycurl");
|
||||
/* if (put_method) {
|
||||
file = fopen("tmp/sami_temp", "wb");
|
||||
if (file == NULL) {
|
||||
NET_LOGE("fopen() failed, file is NULL");
|
||||
}
|
||||
}
|
||||
*/
|
||||
//get_proxy_address();
|
||||
|
||||
chunk.memory = NULL;
|
||||
|
||||
/* init the curl session */
|
||||
curl_handle = curl_easy_init();
|
||||
if (curl_handle == NULL) {
|
||||
printf("Unable to initialize cURL interface");
|
||||
//NET_LOGE("Unable to initialize cURL interface");
|
||||
ret_val = ArtikCloud_ERROR_UNKNOWN;
|
||||
goto RETURN;
|
||||
}
|
||||
|
||||
curl_res = curl_easy_setopt(curl_handle, CURLOPT_SSL_VERIFYPEER, 0L);
|
||||
curl_error_print(curl_res, errbuf, __LINE__);
|
||||
if (curl_res != CURLE_OK) {
|
||||
ret_val = ArtikCloud_ERROR_UNKNOWN;
|
||||
goto CURL_EASY_CLEANUP;
|
||||
}
|
||||
|
||||
if (queryParams.size() > 0) {
|
||||
string queryParam = "";
|
||||
for (std::map<string, string>::iterator queryIter = queryParams.begin(); queryIter != queryParams.end(); ++queryIter) {
|
||||
if (queryIter == queryParams.begin())
|
||||
queryParam.append("?");
|
||||
else
|
||||
queryParam.append("&");
|
||||
string pKey = static_cast<string> (queryIter->first);
|
||||
string pValue = static_cast<string> (queryIter->second);
|
||||
char *encoded = curl_easy_escape(curl_handle, pKey.c_str(), 0);
|
||||
queryParam.append(encoded);
|
||||
curl_free(encoded);
|
||||
queryParam.append("=");
|
||||
encoded = curl_easy_escape(curl_handle, pValue.c_str(), 0);
|
||||
queryParam.append(encoded);
|
||||
curl_free(encoded);
|
||||
}
|
||||
uri.append(queryParam);
|
||||
}
|
||||
//AppLog("%ls", uri.c_str());
|
||||
printf("%s", uri.c_str());
|
||||
|
||||
|
||||
curl_res = curl_easy_setopt(curl_handle, CURLOPT_ERRORBUFFER, errbuf);
|
||||
curl_error_print(curl_res, errbuf, __LINE__);
|
||||
if (curl_res != CURLE_OK) {
|
||||
ret_val = ArtikCloud_ERROR_UNKNOWN;
|
||||
goto CURL_EASY_CLEANUP;
|
||||
}
|
||||
|
||||
/* no progcurl_ress meter please */
|
||||
//curl_easy_setopt(curl_handle, CURLOPT_FOLLOWLOCATION, 1L);
|
||||
|
||||
/* send all data to this function */
|
||||
curl_res = curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);
|
||||
curl_error_print(curl_res, errbuf, __LINE__);
|
||||
if (curl_res != CURLE_OK) {
|
||||
ret_val = ArtikCloud_ERROR_UNKNOWN;
|
||||
goto CURL_EASY_CLEANUP;
|
||||
}
|
||||
|
||||
switch (httpMethod) {
|
||||
case NET_HTTP_GET:
|
||||
curl_res = curl_easy_setopt(curl_handle, CURLOPT_HTTPGET, true);
|
||||
curl_error_print(curl_res, errbuf, __LINE__);
|
||||
if (curl_res != CURLE_OK) {
|
||||
ret_val = ArtikCloud_ERROR_UNKNOWN;
|
||||
goto CURL_EASY_CLEANUP;
|
||||
}
|
||||
break;
|
||||
case NET_HTTP_POST:
|
||||
curl_res = curl_easy_setopt(curl_handle, CURLOPT_POST, true);
|
||||
curl_error_print(curl_res, errbuf, __LINE__);
|
||||
if (curl_res != CURLE_OK) {
|
||||
ret_val = ArtikCloud_ERROR_UNKNOWN;
|
||||
goto CURL_EASY_CLEANUP;
|
||||
}
|
||||
|
||||
curl_res = curl_easy_setopt(curl_handle, CURLOPT_POSTFIELDS, body);
|
||||
curl_error_print(curl_res, errbuf, __LINE__);
|
||||
if (curl_res != CURLE_OK) {
|
||||
ret_val = ArtikCloud_ERROR_UNKNOWN;
|
||||
goto CURL_EASY_CLEANUP;
|
||||
}
|
||||
break;
|
||||
case NET_HTTP_DELETE:
|
||||
curl_res = curl_easy_setopt(curl_handle, CURLOPT_CUSTOMREQUEST, "DELETE");
|
||||
curl_error_print(curl_res, errbuf, __LINE__);
|
||||
if (curl_res != CURLE_OK) {
|
||||
ret_val = ArtikCloud_ERROR_UNKNOWN;
|
||||
goto CURL_EASY_CLEANUP;
|
||||
}
|
||||
|
||||
curl_res = curl_easy_setopt(curl_handle, CURLOPT_POSTFIELDS, body);
|
||||
curl_error_print(curl_res, errbuf, __LINE__);
|
||||
if (curl_res != CURLE_OK) {
|
||||
ret_val = ArtikCloud_ERROR_UNKNOWN;
|
||||
goto CURL_EASY_CLEANUP;
|
||||
}
|
||||
break;
|
||||
case NET_HTTP_PUT:
|
||||
//curl_res = curl_easy_setopt(curl_handle, CURLOPT_PUT, 1);
|
||||
//curl_res = curl_easy_setopt(curl_handle, CURLOPT_UPLOAD, 1);
|
||||
curl_res = curl_easy_setopt(curl_handle, CURLOPT_CUSTOMREQUEST, "PUT");
|
||||
curl_error_print(curl_res, errbuf, __LINE__);
|
||||
if (curl_res != CURLE_OK) {
|
||||
ret_val = ArtikCloud_ERROR_UNKNOWN;
|
||||
goto CURL_EASY_CLEANUP;
|
||||
}
|
||||
|
||||
curl_res = curl_easy_setopt(curl_handle, CURLOPT_POSTFIELDS, body);
|
||||
curl_error_print(curl_res, errbuf, __LINE__);
|
||||
if (curl_res != CURLE_OK) {
|
||||
ret_val = ArtikCloud_ERROR_UNKNOWN;
|
||||
goto CURL_EASY_CLEANUP;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
/* set URL to get */
|
||||
url = (char *) malloc(uri.size() + 1);
|
||||
memcpy(url, uri.c_str(), uri.size() + 1);
|
||||
printf("\n%s\n", url);
|
||||
curl_res = curl_easy_setopt(curl_handle, CURLOPT_URL, url);
|
||||
curl_error_print(curl_res, errbuf, __LINE__);
|
||||
if (curl_res != CURLE_OK) {
|
||||
ret_val = ArtikCloud_ERROR_UNKNOWN;
|
||||
goto CURL_EASY_CLEANUP;
|
||||
}
|
||||
|
||||
//curl_easy_setopt(curl_handle, CURLOPT_HEADER, 1);
|
||||
// curl_res = curl_easy_setopt(curl_handle, CURLOPT_HEADER, true);
|
||||
// curl_error_print(curl_res, errbuf, __LINE__);
|
||||
|
||||
curl_res = curl_easy_setopt(curl_handle, CURLOPT_HTTPHEADER, headerList);
|
||||
curl_error_print(curl_res, errbuf, __LINE__);
|
||||
if (curl_res != CURLE_OK) {
|
||||
ret_val = ArtikCloud_ERROR_UNKNOWN;
|
||||
goto CURL_EASY_CLEANUP;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
if(body != NULL) {
|
||||
if (put_method == false) {
|
||||
curl_res = curl_easy_setopt(curl_handle, CURLOPT_POSTFIELDS, body);
|
||||
curl_error_print(curl_res, errbuf, 184);
|
||||
}
|
||||
|
||||
else {
|
||||
curl_res = curl_easy_setopt(curl_handle, CURLOPT_PUT, 1);
|
||||
curl_error_print(curl_res, errbuf, 188);
|
||||
//curl_easy_setopt(curl_handle, CURLOPT_BINARYTRANSFER, 1);
|
||||
|
||||
if (fwrite(body, sizeof(char), strlen(body), file) != strlen(body)) {
|
||||
NET_LOGE("fwrite() failed");
|
||||
}
|
||||
curl_res = curl_easy_setopt(curl_handle, CURLOPT_INFILE, file);
|
||||
curl_error_print(curl_res, errbuf, 195);
|
||||
curl_res = curl_easy_setopt(curl_handle, CURLOPT_INFILESIZE, strlen(body));
|
||||
curl_error_print(curl_res, errbuf, 197);
|
||||
|
||||
if (g_unlink("tmp/sami_temp") == -1) {
|
||||
NET_LOGE("file was not deleted");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
*/
|
||||
|
||||
chunk.memory = (char *) malloc(1); /* will be grown as needed by the realloc above */
|
||||
chunk.size = 0; /* no data at this point */
|
||||
|
||||
/* we want the headers to this file handle */
|
||||
curl_res = curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, (void *) &chunk);
|
||||
curl_error_print(curl_res, errbuf, __LINE__);
|
||||
if (curl_res != CURLE_OK) {
|
||||
ret_val = ArtikCloud_ERROR_UNKNOWN;
|
||||
goto FREE_CHUNK;
|
||||
}
|
||||
|
||||
/* some servers don't like requests that are made without a user-agent
|
||||
field, so we provide one */
|
||||
curl_res = curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, "libcurl-agent/1.0");
|
||||
curl_error_print(curl_res, errbuf, __LINE__);
|
||||
if (curl_res != CURLE_OK) {
|
||||
ret_val = ArtikCloud_ERROR_UNKNOWN;
|
||||
goto FREE_CHUNK;
|
||||
}
|
||||
|
||||
/* set timeout */
|
||||
curl_res = curl_easy_setopt(curl_handle, CURLOPT_TIMEOUT, 30L);
|
||||
curl_error_print(curl_res, errbuf, __LINE__);
|
||||
if (curl_res != CURLE_OK) {
|
||||
ret_val = ArtikCloud_ERROR_UNKNOWN;
|
||||
goto FREE_CHUNK;
|
||||
}
|
||||
|
||||
//curl_res = curl_easy_setopt(curl_handle, CURLOPT_PROXY, "http://10.112.1.184:8080/");
|
||||
curl_res = curl_easy_perform(curl_handle);
|
||||
curl_error_print(curl_res, errbuf, __LINE__);
|
||||
if (curl_res == CURLE_COULDNT_RESOLVE_HOST) {
|
||||
ret_val = ArtikCloud_ERROR_UNREACHED_TO_SERVER;
|
||||
goto FREE_CHUNK;
|
||||
} else if (curl_res != CURLE_OK) {
|
||||
ret_val = ArtikCloud_ERROR_UNKNOWN;
|
||||
goto FREE_CHUNK;
|
||||
}
|
||||
curl_easy_getinfo(curl_handle, CURLINFO_RESPONSE_CODE, code);
|
||||
|
||||
p_chunk->memory = chunk.memory;
|
||||
p_chunk->size = chunk.size;
|
||||
/*
|
||||
if (put_method) {
|
||||
fclose(file);
|
||||
if (g_unlink("tmp/sami_temp") == -1) {
|
||||
NET_LOGE("file was not deleted");
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
FREE_CHUNK:
|
||||
if (curl_res != CURLE_OK) {
|
||||
if (chunk.memory) {
|
||||
free(chunk.memory);
|
||||
chunk.memory = NULL;
|
||||
}
|
||||
size_t len = strlen(errbuf);
|
||||
fprintf(stderr, "\nlibcurl: (%d) ", curl_res);
|
||||
if (len) {
|
||||
sprintf(errormsg, "%s%s", errbuf, ((errbuf[len - 1] != '\n') ? "\n" : ""));
|
||||
} else {
|
||||
sprintf(errormsg, "%s\n", curl_easy_strerror(curl_res));
|
||||
}
|
||||
}
|
||||
|
||||
CURL_EASY_CLEANUP:
|
||||
/* cleanup curl stuff */
|
||||
curl_easy_cleanup(curl_handle);
|
||||
|
||||
|
||||
RETURN:
|
||||
printf("end NET_Utils::easycurl");
|
||||
free(url);
|
||||
free(body);
|
||||
//NET_LOGD("end NET_Utils::easycurl");
|
||||
return ret_val;
|
||||
}
|
||||
Reference in New Issue
Block a user