diff options
Diffstat (limited to 'anteraja.c')
-rw-r--r-- | anteraja.c | 31 |
1 files changed, 17 insertions, 14 deletions
@@ -57,33 +57,35 @@ static char *prefix = NULL; const char **anteraja_init(char *provisions[]) { enum { ACCESS_KEY_ID, SECRET_ACCESS_KEY, BASE_PATH, PREFIX }; - shipping.base = malloc(strlen(provisions[BASE_PATH]) + 1); - strcpy(shipping.base, provisions[BASE_PATH]); + struct shipping *shipping = shipping_list[PIKUL_ANTERAJA]; + shipping->base = malloc(strlen(provisions[BASE_PATH]) + 1); + strcpy(shipping->base, provisions[BASE_PATH]); if (provisions[PREFIX]) { prefix = malloc(strlen(provisions[PREFIX]) + 1); strcpy(prefix, provisions[PREFIX]); } - shipping.headers = curl_slist_append(shipping.headers, "Content-Type:application/json"); + shipping->headers = curl_slist_append(shipping->headers, "Content-Type:application/json"); static const char *status_trail[] = { "status", NULL }; - shipping.status_trail = status_trail; + shipping->status_trail = status_trail; static const char *fields[] = { "access-key-id", "secret-access-key", NULL }; return fields; } const char **anteraja_services(const char *origin, const char *destination, double weight) { - shipping.url = malloc(strlen(shipping.base) + strlen(SERVICES_PATH) + 1); - sprintf(shipping.url, "%s%s", shipping.base, SERVICES_PATH); - shipping.post = malloc(strlen(SERVICES_POST) + strlen(origin) + strlen(destination) + struct shipping *shipping = shipping_list[PIKUL_ANTERAJA]; + shipping->url = malloc(strlen(shipping->base) + strlen(SERVICES_PATH) + 1); + sprintf(shipping->url, "%s%s", shipping->base, SERVICES_PATH); + shipping->post = malloc(strlen(SERVICES_POST) + strlen(origin) + strlen(destination) + SERVICES_WEIGHT - 2 * strlen("%s") - strlen("%d") + 1); - sprintf(shipping.post, SERVICES_POST, origin, destination, + sprintf(shipping->post, SERVICES_POST, origin, destination, weight < 1.0 ? 1000 : (int)weight * 1000); static const char *trail[] = { "content", "services", NULL }; - shipping.trail = trail; + shipping->trail = trail; static const char *attributes[] = { "product_code", "product_name", @@ -99,8 +101,9 @@ void anteraja_order(const char *order_number, const char *service, const char *s const char *destination, const char *receiver_address, const char *receiver_postal, int nitems, char **items[], double subtotal) { - shipping.url = malloc(strlen(shipping.base) + strlen(ORDER_PATH) + 1); - sprintf(shipping.url, "%s%s", shipping.base, ORDER_PATH); + struct shipping *shipping = shipping_list[PIKUL_ANTERAJA]; + shipping->url = malloc(strlen(shipping->base) + strlen(ORDER_PATH) + 1); + sprintf(shipping->url, "%s%s", shipping->base, ORDER_PATH); enum { SKU, QUANTITY, DESCRIPTION, PRICE, WEIGHT }; char *json = NULL; double total_weight = .0; @@ -132,13 +135,13 @@ void anteraja_order(const char *order_number, const char *service, const char *s else json[strlen(json)] = '\0'; } - shipping.post = malloc(strlen(ORDER_POST) + strlen(prefix) + strlen(order_number) + strlen(service) + shipping->post = malloc(strlen(ORDER_POST) + strlen(prefix) + strlen(order_number) + strlen(service) + ORDER_WEIGHT + strlen(sender_name) + strlen(sender_phone) + strlen(origin) + strlen(sender_address) + strlen(sender_postal) + strlen(receiver_name) + strlen(receiver_phone) + strlen(destination) + strlen(receiver_address) + strlen(receiver_postal) + strlen(json) + ORDER_INSURANCE + ORDER_SUBTOTAL - 15 * strlen("%s") - 2 * strlen("%d") + 1); - sprintf(shipping.post, ORDER_POST, prefix, order_number, service, + sprintf(shipping->post, ORDER_POST, prefix, order_number, service, total_weight < 1000.0 ? 1000 : (int)total_weight, sender_name, sender_phone, origin, sender_address, sender_postal, receiver_name, receiver_phone, destination, receiver_address, receiver_postal, json, total_weight < 1000.0 ? "true" : "false", @@ -148,7 +151,7 @@ void anteraja_order(const char *order_number, const char *service, const char *s "waybill_no", NULL }; - shipping.trail = trail; + shipping->trail = trail; } void anteraja_cleanup() |