printing out response code and body

This commit is contained in:
Nishant Kumar
2024-03-24 00:51:15 +05:30
parent d0ec2c74d1
commit 5b4ff7a000
2 changed files with 794 additions and 4 deletions

View File

@@ -10,7 +10,27 @@ class cCurlCodeGen {
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <curl/curl.h> #include <curl/curl.h>
struct ResponseData {
char *data;
size_t size;
};
size_t write_callback(char *ptr, size_t size, size_t nmemb, void *userdata) {
struct ResponseData *response_data = (struct ResponseData *)userdata;
size_t real_size = size * nmemb;
response_data->data = realloc(response_data->data, response_data->size + real_size + 1);
if (response_data->data == NULL) {
fprintf(stderr, "Memory allocation failed\\n\");
return 0;
}
memcpy(&(response_data->data[response_data->size]), ptr, real_size);
response_data->size += real_size;
response_data->data[response_data->size] = 0;
return real_size;
}
int main() { int main() {
CURL *curl; CURL *curl;
CURLcode res; CURLcode res;
@@ -54,11 +74,20 @@ int main() {
"""; """;
String kTemplateQueryParam = """"""; String kTemplateQueryParam = """""";
String kTemplateRequest = """{% if method != "GET" and method != "POST" %}\n curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "{{method}}");{% endif %}"""; String kTemplateRequest =
"""{% if method != "GET" and method != "POST" %}\n curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "{{method}}");{% endif %}""";
final String kTemplateEnd = """ final String kTemplateEnd = """
{% if formdata %}curl_easy_setopt(curl, CURLOPT_MIMEPOST, mime);{% endif %} {% if formdata %}curl_easy_setopt(curl, CURLOPT_MIMEPOST, mime);{% endif %}
res = curl_easy_perform(curl);{% if formdata %}\n curl_mime_free(mime);{% endif %}{% if headers %}\n curl_slist_free_all(headers);{% endif %} struct ResponseData response_data = {0};
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response_data);
res = curl_easy_perform(curl);
long response_code;
curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response_code);
printf("Response code: %ld\\n\", response_code);
printf("Response body: %s\\n\", response_data.data);
free(response_data.data);{% if formdata %}\n curl_mime_free(mime);{% endif %}{% if headers %}\n curl_slist_free_all(headers);{% endif %}
} }
curl_easy_cleanup(curl); curl_easy_cleanup(curl);
return 0; return 0;
@@ -99,7 +128,10 @@ int main() {
); );
var headersList = requestModel.enabledRequestHeaders; var headersList = requestModel.enabledRequestHeaders;
if (headersList != null || requestModel.hasBody || requestModel.hasTextData || requestModel.hasJsonData) { if (headersList != null ||
requestModel.hasBody ||
requestModel.hasTextData ||
requestModel.hasJsonData) {
var headers = requestModel.enabledHeadersMap; var headers = requestModel.enabledHeadersMap;
// if (requestModel.hasFormData) { // if (requestModel.hasFormData) {
// headers.putIfAbsent("Content-Type", () => "multipart/form-data"); // headers.putIfAbsent("Content-Type", () => "multipart/form-data");
@@ -144,7 +176,9 @@ int main() {
} }
} }
var headers = requestModel.enabledHeadersMap; var headers = requestModel.enabledHeadersMap;
bool allow = headers.isNotEmpty || requestModel.hasTextData || requestModel.hasJsonData; bool allow = headers.isNotEmpty ||
requestModel.hasTextData ||
requestModel.hasJsonData;
var templateEnd = jj.Template(kTemplateEnd); var templateEnd = jj.Template(kTemplateEnd);
result += templateEnd.render({ result += templateEnd.render({
"formdata": requestModel.hasFormData, "formdata": requestModel.hasFormData,

View File

File diff suppressed because it is too large Load Diff