Viktor Szépe 39d5b4ebf9
Replace stray TAB characters with spaces (#17311)
* Replace stray TAB characters with spaces

* update samples

---------

Co-authored-by: William Cheng <wing328hk@gmail.com>
2023-12-05 18:01:25 +08:00

194 lines
4.3 KiB
C

#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include "order.h"
char* statusorder_ToString(openapi_petstore_order_STATUS_e status) {
char* statusArray[] = { "NULL", "placed", "approved", "delivered" };
return statusArray[status];
}
openapi_petstore_order_STATUS_e statusorder_FromString(char* status){
int stringToReturn = 0;
char *statusArray[] = { "NULL", "placed", "approved", "delivered" };
size_t sizeofArray = sizeof(statusArray) / sizeof(statusArray[0]);
while(stringToReturn < sizeofArray) {
if(strcmp(status, statusArray[stringToReturn]) == 0) {
return stringToReturn;
}
stringToReturn++;
}
return 0;
}
order_t *order_create(
long id,
long pet_id,
int quantity,
char *ship_date,
openapi_petstore_order_STATUS_e status,
int complete
) {
order_t *order_local_var = malloc(sizeof(order_t));
if (!order_local_var) {
return NULL;
}
order_local_var->id = id;
order_local_var->pet_id = pet_id;
order_local_var->quantity = quantity;
order_local_var->ship_date = ship_date;
order_local_var->status = status;
order_local_var->complete = complete;
return order_local_var;
}
void order_free(order_t *order) {
if(NULL == order){
return ;
}
listEntry_t *listEntry;
if (order->ship_date) {
free(order->ship_date);
order->ship_date = NULL;
}
free(order);
}
cJSON *order_convertToJSON(order_t *order) {
cJSON *item = cJSON_CreateObject();
// order->id
if(order->id) {
if(cJSON_AddNumberToObject(item, "id", order->id) == NULL) {
goto fail; //Numeric
}
}
// order->pet_id
if(order->pet_id) {
if(cJSON_AddNumberToObject(item, "petId", order->pet_id) == NULL) {
goto fail; //Numeric
}
}
// order->quantity
if(order->quantity) {
if(cJSON_AddNumberToObject(item, "quantity", order->quantity) == NULL) {
goto fail; //Numeric
}
}
// order->ship_date
if(order->ship_date) {
if(cJSON_AddStringToObject(item, "shipDate", order->ship_date) == NULL) {
goto fail; //Date-Time
}
}
// order->status
if(order->status != openapi_petstore_order_STATUS_NULL) {
if(cJSON_AddStringToObject(item, "status", statusorder_ToString(order->status)) == NULL)
{
goto fail; //Enum
}
}
// order->complete
if(order->complete) {
if(cJSON_AddBoolToObject(item, "complete", order->complete) == NULL) {
goto fail; //Bool
}
}
return item;
fail:
if (item) {
cJSON_Delete(item);
}
return NULL;
}
order_t *order_parseFromJSON(cJSON *orderJSON){
order_t *order_local_var = NULL;
// order->id
cJSON *id = cJSON_GetObjectItemCaseSensitive(orderJSON, "id");
if (id) {
if(!cJSON_IsNumber(id))
{
goto end; //Numeric
}
}
// order->pet_id
cJSON *pet_id = cJSON_GetObjectItemCaseSensitive(orderJSON, "petId");
if (pet_id) {
if(!cJSON_IsNumber(pet_id))
{
goto end; //Numeric
}
}
// order->quantity
cJSON *quantity = cJSON_GetObjectItemCaseSensitive(orderJSON, "quantity");
if (quantity) {
if(!cJSON_IsNumber(quantity))
{
goto end; //Numeric
}
}
// order->ship_date
cJSON *ship_date = cJSON_GetObjectItemCaseSensitive(orderJSON, "shipDate");
if (ship_date) {
if(!cJSON_IsString(ship_date) && !cJSON_IsNull(ship_date))
{
goto end; //DateTime
}
}
// order->status
cJSON *status = cJSON_GetObjectItemCaseSensitive(orderJSON, "status");
openapi_petstore_order_STATUS_e statusVariable;
if (status) {
if(!cJSON_IsString(status))
{
goto end; //Enum
}
statusVariable = statusorder_FromString(status->valuestring);
}
// order->complete
cJSON *complete = cJSON_GetObjectItemCaseSensitive(orderJSON, "complete");
if (complete) {
if(!cJSON_IsBool(complete))
{
goto end; //Bool
}
}
order_local_var = order_create (
id ? id->valuedouble : 0,
pet_id ? pet_id->valuedouble : 0,
quantity ? quantity->valuedouble : 0,
ship_date && !cJSON_IsNull(ship_date) ? strdup(ship_date->valuestring) : NULL,
status ? statusVariable : -1,
complete ? complete->valueint : 0
);
return order_local_var;
end:
return NULL;
}