From d1b9c27a403fb2ac9e69e82ebea32722c6795daf Mon Sep 17 00:00:00 2001 From: ꦌꦫꦶꦏ꧀ꦦꦿꦧꦮꦑꦩꦭ꧀ Date: Fri, 16 Jul 2021 10:55:51 +0800 Subject: SWIG files, therefore deprecating Pikul-XS --- pikul.i | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 pikul.i (limited to 'pikul.i') diff --git a/pikul.i b/pikul.i new file mode 100644 index 0000000..b00709e --- /dev/null +++ b/pikul.i @@ -0,0 +1,28 @@ +%module Pikul +%{ +#include "pikul.h" +%} + +%typemap(in) char *[] { + AV *tempav = (AV *)SvRV($input); + I32 len = av_len(tempav); + $1 = (char **)malloc((len + 2) * sizeof(char *)); + int i; + for (i = 0; i <= len; i++) { + SV **tv = av_fetch(tempav, i, 0); + $1[i] = (char *)SvPV(*tv, PL_na); + } + $1[i] = NULL; +}; +%typemap(freearg) char *[] { + free($1); +} + +%rename("%(strip:[pikul_])s") ""; +void pikul_init(enum pikul_company company, char *provisions[]); +double pikul_cost(const char *origin, const char *destination, double weight, const char *service); +char *pikul_order(const char *trx_id, const char *service, const char *sender_name, + const char *sender_phone, const char *origin, const char *sender_address, + const char *receiver_name, const char *receiver_phone, const char *destination, + const char *receiver_address, int nitems, char **items[], double value); +void pikul_cleanup(); -- cgit v1.3 From abe673f9ae7d9d23e92a188ade187ec020b1f67a Mon Sep 17 00:00:00 2001 From: ꦌꦫꦶꦏ꧀ꦦꦿꦧꦮꦑꦩꦭ꧀ Date: Fri, 16 Jul 2021 12:01:56 +0800 Subject: Update value parameter to subtotal --- pikul.h | 2 +- pikul.i | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'pikul.i') diff --git a/pikul.h b/pikul.h index d88d218..0bb4e23 100644 --- a/pikul.h +++ b/pikul.h @@ -28,7 +28,7 @@ double pikul_cost(const char *origin, const char *destination, double weight, co char *pikul_order(const char *trx_id, const char *service, const char *sender_name, const char *sender_phone, const char *origin, const char *sender_address, const char *receiver_name, const char *receiver_phone, const char *destination, - const char *receiver_address, int nitems, char **items[], double value); + const char *receiver_address, int nitems, char **items[], double subtotal); void pikul_cleanup(); #ifdef __cplusplus diff --git a/pikul.i b/pikul.i index b00709e..6a0882b 100644 --- a/pikul.i +++ b/pikul.i @@ -24,5 +24,5 @@ double pikul_cost(const char *origin, const char *destination, double weight, co char *pikul_order(const char *trx_id, const char *service, const char *sender_name, const char *sender_phone, const char *origin, const char *sender_address, const char *receiver_name, const char *receiver_phone, const char *destination, - const char *receiver_address, int nitems, char **items[], double value); + const char *receiver_address, int nitems, char **items[], double subtotal); void pikul_cleanup(); -- cgit v1.3 From 4482f46ee073110c7c52d73bc8a8006437eba6f2 Mon Sep 17 00:00:00 2001 From: ꦌꦫꦶꦏ꧀ꦦꦿꦧꦮꦑꦩꦭ꧀ Date: Fri, 16 Jul 2021 23:02:24 +0800 Subject: use_insurance turns out to be required This one follows the example given for the boolean JSON value, which is written as true or false. The response is error 500, internal server error. Despite the example, it says max length is 1 in the middle part of the doc, so maybe it should be written as 1 or 0. Will be tried next. --- anteraja.c | 10 ++++++---- pikul.c | 6 +++--- pikul.h | 2 +- pikul.i | 2 +- 4 files changed, 11 insertions(+), 9 deletions(-) (limited to 'pikul.i') diff --git a/anteraja.c b/anteraja.c index 8b78815..65f7206 100644 --- a/anteraja.c +++ b/anteraja.c @@ -31,9 +31,11 @@ \"items\":[\ %s\ ],\ +\"use_insurance\":%s,\ \"declared_value\":%d\ }" #define ORDER_WEIGHT 5 +#define ORDER_INSURANCE strlen("false") #define ORDER_SUBTOTAL 9 #define ORDER_ITEM \ @@ -95,7 +97,7 @@ size_t anteraja_services_handle(const char *contents, size_t size, size_t nmemb, void anteraja_order(const char *trx_id, const char *service, const char *sender_name, const char *sender_phone, const char *origin, const char *sender_address, const char *receiver_name, const char *receiver_phone, const char *destination, - const char *receiver_address, int nitems, char **items[], double subtotal, + const char *receiver_address, int nitems, char **items[], _Bool insurance, double subtotal, char **url, char **post) { *url = malloc(strlen(shipping.base) + strlen(ORDER_PATH) + 1); @@ -129,11 +131,11 @@ void anteraja_order(const char *trx_id, const char *service, const char *sender_ *post = malloc(strlen(ORDER_POST) + strlen(prefix) + strlen(trx_id) + strlen(service) + ORDER_WEIGHT + strlen(sender_name) + strlen(sender_phone) + strlen(origin) + strlen(sender_address) + strlen(receiver_name) + strlen(receiver_phone) - + strlen(destination) + strlen(receiver_address) + strlen(json) + ORDER_SUBTOTAL - - 12 * strlen("%s") - 2 * strlen("%d") + 1); + + strlen(destination) + strlen(receiver_address) + strlen(json) + ORDER_INSURANCE + + ORDER_SUBTOTAL - 13 * strlen("%s") - 2 * strlen("%d") + 1); sprintf(*post, ORDER_POST, prefix, trx_id, service, (int)total_weight, sender_name, sender_phone, origin, sender_address, receiver_name, receiver_phone, destination, - receiver_address, json, (int)subtotal); + receiver_address, json, insurance ? "true" : "false", (int)subtotal); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, *post); } diff --git a/pikul.c b/pikul.c index d299cbe..a08b101 100644 --- a/pikul.c +++ b/pikul.c @@ -15,7 +15,7 @@ extern void anteraja_services(const char *, const char *, double, char **, char extern size_t anteraja_services_handle(const char *, size_t, size_t, struct pikul_services **); extern void anteraja_order(const char *, const char *, const char *, const char *, const char *, const char *, const char *, const char *, const char *, const char *, int, - char **[], double, char **, char **); + char **[], _Bool, double, char **, char **); extern size_t anteraja_order_handle(const char *, size_t size, size_t nmemb, char **); extern void anteraja_cleanup(); @@ -115,7 +115,7 @@ double pikul_cost(const char *origin, const char *destination, double weight, co char *pikul_order(const char *trx_id, const char *service, const char *sender_name, const char *sender_phone, const char *origin, const char *sender_address, const char *receiver_name, const char *receiver_phone, const char *destination, - const char *receiver_address, int nitems, char **items[], double subtotal) + const char *receiver_address, int nitems, char **items[], _Bool insurance, double subtotal) { curl_easy_setopt(curl, CURLOPT_WRITEDATA, &waybill); char *url; @@ -125,7 +125,7 @@ char *pikul_order(const char *trx_id, const char *service, const char *sender_na case PIKUL_ANTERAJA: anteraja_order(trx_id, service, sender_name, sender_phone, origin, sender_address, receiver_name, receiver_phone, destination, receiver_address, - nitems, items, subtotal, &url, &post); + nitems, items, insurance, subtotal, &url, &post); handler = anteraja_order_handle; break; default: diff --git a/pikul.h b/pikul.h index 0bb4e23..e2c6331 100644 --- a/pikul.h +++ b/pikul.h @@ -28,7 +28,7 @@ double pikul_cost(const char *origin, const char *destination, double weight, co char *pikul_order(const char *trx_id, const char *service, const char *sender_name, const char *sender_phone, const char *origin, const char *sender_address, const char *receiver_name, const char *receiver_phone, const char *destination, - const char *receiver_address, int nitems, char **items[], double subtotal); + const char *receiver_address, int nitems, char **items[], _Bool insurance, double subtotal); void pikul_cleanup(); #ifdef __cplusplus diff --git a/pikul.i b/pikul.i index 6a0882b..05b45c9 100644 --- a/pikul.i +++ b/pikul.i @@ -24,5 +24,5 @@ double pikul_cost(const char *origin, const char *destination, double weight, co char *pikul_order(const char *trx_id, const char *service, const char *sender_name, const char *sender_phone, const char *origin, const char *sender_address, const char *receiver_name, const char *receiver_phone, const char *destination, - const char *receiver_address, int nitems, char **items[], double subtotal); + const char *receiver_address, int nitems, char **items[], _Bool insurance, double subtotal); void pikul_cleanup(); -- cgit v1.3 From b6abbff926e9ff9908935224c1655d94dcc09441 Mon Sep 17 00:00:00 2001 From: ꦌꦫꦶꦏ꧀ꦦꦿꦧꦮꦑꦩꦭ꧀ Date: Fri, 16 Jul 2021 23:28:28 +0800 Subject: Typemap for char **[] Not tested yet. Here so this compiles up to Perl module. --- pikul.i | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'pikul.i') diff --git a/pikul.i b/pikul.i index 05b45c9..69f582a 100644 --- a/pikul.i +++ b/pikul.i @@ -18,6 +18,27 @@ free($1); } +%typemap(in) char **[] { + AV *tempav = (AV *)SvRV($input); + I32 len = av_len(tempav); + $1 = (char ***)malloc((len + 2) * sizeof(char **)); + int i; + for (i = 0; i <= len; i++) { + AV *av = (AV *)av_fetch(tempav, i, 0); + I32 avlen = av_len(av); + $1[i] = (char **)malloc((avlen + 2) * sizeof(char *)); + int j; + for (j = 0; j <= avlen; j++) { + SV **tv = av_fetch(av, j, 0); + $1[i][j] = (char *)SvPV(*tv, PL_na); + } + $1[i][j] = NULL; + } +}; +%typemap(freearg) char **[] { + free($1); +} + %rename("%(strip:[pikul_])s") ""; void pikul_init(enum pikul_company company, char *provisions[]); double pikul_cost(const char *origin, const char *destination, double weight, const char *service); -- cgit v1.3 From 0930b738f5261d4e2630242ca5fa2a6bc63026ff Mon Sep 17 00:00:00 2001 From: ꦌꦫꦶꦏ꧀ꦦꦿꦧꦮꦑꦩꦭ꧀ Date: Sat, 17 Jul 2021 09:41:41 +0800 Subject: Finally able to typemap char **[] right For now the item object is still flattened. --- pikul.i | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) (limited to 'pikul.i') diff --git a/pikul.i b/pikul.i index 69f582a..a4215e9 100644 --- a/pikul.i +++ b/pikul.i @@ -19,21 +19,23 @@ } %typemap(in) char **[] { - AV *tempav = (AV *)SvRV($input); - I32 len = av_len(tempav); - $1 = (char ***)malloc((len + 2) * sizeof(char **)); + AV *items = (AV *)SvRV($input); + I32 nitems_min1 = av_len(items); + $1 = (char ***)malloc((nitems_min1 + 2) * sizeof(char **)); int i; - for (i = 0; i <= len; i++) { - AV *av = (AV *)av_fetch(tempav, i, 0); - I32 avlen = av_len(av); - $1[i] = (char **)malloc((avlen + 2) * sizeof(char *)); + for (i = 0; i <= nitems_min1; i++) { + SV **refptr = av_fetch(items, i, 0); + AV *flat = (AV *)SvRV(*refptr); + I32 nattrs_min1 = av_len(flat); + $1[i] = (char **)malloc((nattrs_min1 + 2) * sizeof(char *)); int j; - for (j = 0; j <= avlen; j++) { - SV **tv = av_fetch(av, j, 0); + for (j = 0; j <= nattrs_min1; j++) { + SV **tv = av_fetch(flat, j, 0); $1[i][j] = (char *)SvPV(*tv, PL_na); } $1[i][j] = NULL; } + $1[i] = NULL; }; %typemap(freearg) char **[] { free($1); -- cgit v1.3 From 3eb347f32335a58c681d1777dfeef8c6dc1c76d5 Mon Sep 17 00:00:00 2001 From: ꦌꦫꦶꦏ꧀ꦦꦿꦧꦮꦑꦩꦭ꧀ Date: Sat, 17 Jul 2021 09:52:30 +0800 Subject: _Bool typemap --- pikul.i | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'pikul.i') diff --git a/pikul.i b/pikul.i index a4215e9..e2d363f 100644 --- a/pikul.i +++ b/pikul.i @@ -41,6 +41,10 @@ free($1); } +%typemap(in) _Bool { + $1 = $input; +} + %rename("%(strip:[pikul_])s") ""; void pikul_init(enum pikul_company company, char *provisions[]); double pikul_cost(const char *origin, const char *destination, double weight, const char *service); -- cgit v1.3 From dfa57092e26c242c2ab64dc1d029e5dff44eee67 Mon Sep 17 00:00:00 2001 From: ꦌꦫꦶꦏ꧀ꦦꦿꦧꦮꦑꦩꦭ꧀ Date: Sat, 17 Jul 2021 11:05:19 +0800 Subject: Rename trx_id to order_number --- anteraja.c | 8 ++++---- pikul.c | 8 ++++---- pikul.h | 2 +- pikul.i | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) (limited to 'pikul.i') diff --git a/anteraja.c b/anteraja.c index 65f7206..b49c07c 100644 --- a/anteraja.c +++ b/anteraja.c @@ -94,7 +94,7 @@ size_t anteraja_services_handle(const char *contents, size_t size, size_t nmemb, return realsize; } -void anteraja_order(const char *trx_id, const char *service, const char *sender_name, +void anteraja_order(const char *order_number, const char *service, const char *sender_name, const char *sender_phone, const char *origin, const char *sender_address, const char *receiver_name, const char *receiver_phone, const char *destination, const char *receiver_address, int nitems, char **items[], _Bool insurance, double subtotal, @@ -128,13 +128,13 @@ void anteraja_order(const char *trx_id, const char *service, const char *sender_ else json[strlen(json)] = '\0'; } - *post = malloc(strlen(ORDER_POST) + strlen(prefix) + strlen(trx_id) + strlen(service) + *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(receiver_name) + strlen(receiver_phone) + strlen(destination) + strlen(receiver_address) + strlen(json) + ORDER_INSURANCE + ORDER_SUBTOTAL - 13 * strlen("%s") - 2 * strlen("%d") + 1); - sprintf(*post, ORDER_POST, prefix, trx_id, service, (int)total_weight, sender_name, sender_phone, - origin, sender_address, receiver_name, receiver_phone, destination, + sprintf(*post, ORDER_POST, prefix, order_number, service, (int)total_weight, sender_name, + sender_phone, origin, sender_address, receiver_name, receiver_phone, destination, receiver_address, json, insurance ? "true" : "false", (int)subtotal); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, *post); } diff --git a/pikul.c b/pikul.c index a08b101..5f04136 100644 --- a/pikul.c +++ b/pikul.c @@ -112,7 +112,7 @@ double pikul_cost(const char *origin, const char *destination, double weight, co return cost; } -char *pikul_order(const char *trx_id, const char *service, const char *sender_name, +char *pikul_order(const char *order_number, const char *service, const char *sender_name, const char *sender_phone, const char *origin, const char *sender_address, const char *receiver_name, const char *receiver_phone, const char *destination, const char *receiver_address, int nitems, char **items[], _Bool insurance, double subtotal) @@ -123,9 +123,9 @@ char *pikul_order(const char *trx_id, const char *service, const char *sender_na size_t (*handler)(const char *, size_t, size_t, char **); switch (shipping.company) { case PIKUL_ANTERAJA: - anteraja_order(trx_id, service, sender_name, sender_phone, origin, sender_address, - receiver_name, receiver_phone, destination, receiver_address, - nitems, items, insurance, subtotal, &url, &post); + anteraja_order(order_number, service, sender_name, sender_phone, origin, + sender_address, receiver_name, receiver_phone, destination, + receiver_address, nitems, items, insurance, subtotal, &url, &post); handler = anteraja_order_handle; break; default: diff --git a/pikul.h b/pikul.h index e2c6331..623c87a 100644 --- a/pikul.h +++ b/pikul.h @@ -25,7 +25,7 @@ void pikul_init(enum pikul_company company, char *provisions[]); struct pikul_services *pikul_services(const char *origin, const char *destination, double weight); void pikul_free_services(struct pikul_services *services); double pikul_cost(const char *origin, const char *destination, double weight, const char *service); -char *pikul_order(const char *trx_id, const char *service, const char *sender_name, +char *pikul_order(const char *order_number, const char *service, const char *sender_name, const char *sender_phone, const char *origin, const char *sender_address, const char *receiver_name, const char *receiver_phone, const char *destination, const char *receiver_address, int nitems, char **items[], _Bool insurance, double subtotal); diff --git a/pikul.i b/pikul.i index e2d363f..9defe86 100644 --- a/pikul.i +++ b/pikul.i @@ -48,7 +48,7 @@ %rename("%(strip:[pikul_])s") ""; void pikul_init(enum pikul_company company, char *provisions[]); double pikul_cost(const char *origin, const char *destination, double weight, const char *service); -char *pikul_order(const char *trx_id, const char *service, const char *sender_name, +char *pikul_order(const char *order_number, const char *service, const char *sender_name, const char *sender_phone, const char *origin, const char *sender_address, const char *receiver_name, const char *receiver_phone, const char *destination, const char *receiver_address, int nitems, char **items[], _Bool insurance, double subtotal); -- cgit v1.3 From b999dd2f128bcf209c62d3419a559e70222e7b04 Mon Sep 17 00:00:00 2001 From: ꦌꦫꦶꦏ꧀ꦦꦿꦧꦮꦑꦩꦭ꧀ Date: Sat, 17 Jul 2021 15:29:20 +0800 Subject: Postal codes for both sender & receiver --- anteraja.c | 24 ++++++++++++++---------- pikul.c | 14 ++++++++------ pikul.h | 5 +++-- pikul.i | 5 +++-- 4 files changed, 28 insertions(+), 20 deletions(-) (limited to 'pikul.i') diff --git a/anteraja.c b/anteraja.c index b49c07c..89239ab 100644 --- a/anteraja.c +++ b/anteraja.c @@ -20,13 +20,15 @@ \"name\":\"%s\",\ \"phone\":\"%s\",\ \"district\":\"%s\",\ -\"address\":\"%s\"\ +\"address\":\"%s\",\ +\"postcode\":\"%s\"\ },\ \"receiver\":{\ \"name\":\"%s\",\ \"phone\":\"%s\",\ \"district\":\"%s\",\ -\"address\":\"%s\"\ +\"address\":\"%s\",\ +\"postcode\":\"%s\"\ },\ \"items\":[\ %s\ @@ -96,9 +98,9 @@ size_t anteraja_services_handle(const char *contents, size_t size, size_t nmemb, void anteraja_order(const char *order_number, const char *service, const char *sender_name, const char *sender_phone, const char *origin, const char *sender_address, - const char *receiver_name, const char *receiver_phone, const char *destination, - const char *receiver_address, int nitems, char **items[], _Bool insurance, double subtotal, - char **url, char **post) + const char *sender_postal, const char *receiver_name, const char *receiver_phone, + const char *destination, const char *receiver_address, const char *receiver_postal, + int nitems, char **items[], _Bool insurance, double subtotal, char **url, char **post) { *url = malloc(strlen(shipping.base) + strlen(ORDER_PATH) + 1); sprintf(*url, "%s%s", shipping.base, ORDER_PATH); @@ -130,12 +132,14 @@ void anteraja_order(const char *order_number, const char *service, const char *s } *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(receiver_name) + strlen(receiver_phone) - + strlen(destination) + strlen(receiver_address) + strlen(json) + ORDER_INSURANCE - + ORDER_SUBTOTAL - 13 * strlen("%s") - 2 * strlen("%d") + 1); + + 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(*post, ORDER_POST, prefix, order_number, service, (int)total_weight, sender_name, - sender_phone, origin, sender_address, receiver_name, receiver_phone, destination, - receiver_address, json, insurance ? "true" : "false", (int)subtotal); + sender_phone, origin, sender_address, sender_postal, receiver_name, receiver_phone, + destination, receiver_address, receiver_postal, json, insurance ? "true" : "false", + (int)subtotal); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, *post); } diff --git a/pikul.c b/pikul.c index 5f04136..cb74feb 100644 --- a/pikul.c +++ b/pikul.c @@ -14,8 +14,8 @@ extern void anteraja_init(char *[]); extern void anteraja_services(const char *, const char *, double, char **, char **); extern size_t anteraja_services_handle(const char *, size_t, size_t, struct pikul_services **); extern void anteraja_order(const char *, const char *, const char *, const char *, const char *, - const char *, const char *, const char *, const char *, const char *, int, - char **[], _Bool, double, char **, char **); + const char *, const char *, const char *, const char *, const char *, const char *, + const char *, int, char **[], _Bool, double, char **, char **); extern size_t anteraja_order_handle(const char *, size_t size, size_t nmemb, char **); extern void anteraja_cleanup(); @@ -114,8 +114,9 @@ double pikul_cost(const char *origin, const char *destination, double weight, co char *pikul_order(const char *order_number, const char *service, const char *sender_name, const char *sender_phone, const char *origin, const char *sender_address, - const char *receiver_name, const char *receiver_phone, const char *destination, - const char *receiver_address, int nitems, char **items[], _Bool insurance, double subtotal) + const char *sender_postal, const char *receiver_name, const char *receiver_phone, + const char *destination, const char *receiver_address, const char *receiver_postal, + int nitems, char **items[], _Bool insurance, double subtotal) { curl_easy_setopt(curl, CURLOPT_WRITEDATA, &waybill); char *url; @@ -124,8 +125,9 @@ char *pikul_order(const char *order_number, const char *service, const char *sen switch (shipping.company) { case PIKUL_ANTERAJA: anteraja_order(order_number, service, sender_name, sender_phone, origin, - sender_address, receiver_name, receiver_phone, destination, - receiver_address, nitems, items, insurance, subtotal, &url, &post); + sender_address, sender_postal, receiver_name, receiver_phone, + destination, receiver_address, receiver_postal, nitems, items, + insurance, subtotal, &url, &post); handler = anteraja_order_handle; break; default: diff --git a/pikul.h b/pikul.h index 623c87a..07db738 100644 --- a/pikul.h +++ b/pikul.h @@ -27,8 +27,9 @@ void pikul_free_services(struct pikul_services *services); double pikul_cost(const char *origin, const char *destination, double weight, const char *service); char *pikul_order(const char *order_number, const char *service, const char *sender_name, const char *sender_phone, const char *origin, const char *sender_address, - const char *receiver_name, const char *receiver_phone, const char *destination, - const char *receiver_address, int nitems, char **items[], _Bool insurance, double subtotal); + const char *sender_postal, const char *receiver_name, const char *receiver_phone, + const char *destination, const char *receiver_address, const char *receiver_postal, + int nitems, char **items[], _Bool insurance, double subtotal); void pikul_cleanup(); #ifdef __cplusplus diff --git a/pikul.i b/pikul.i index 9defe86..aa4c707 100644 --- a/pikul.i +++ b/pikul.i @@ -50,6 +50,7 @@ void pikul_init(enum pikul_company company, char *provisions[]); double pikul_cost(const char *origin, const char *destination, double weight, const char *service); char *pikul_order(const char *order_number, const char *service, const char *sender_name, const char *sender_phone, const char *origin, const char *sender_address, - const char *receiver_name, const char *receiver_phone, const char *destination, - const char *receiver_address, int nitems, char **items[], _Bool insurance, double subtotal); + const char *sender_postal, const char *receiver_name, const char *receiver_phone, + const char *destination, const char *receiver_address, const char *receiver_postal, + int nitems, char **items[], _Bool insurance, double subtotal); void pikul_cleanup(); -- cgit v1.3 From 3f8539bd52be8fdfaca4a056373d751799241659 Mon Sep 17 00:00:00 2001 From: ꦌꦫꦶꦏ꧀ꦦꦿꦧꦮꦑꦩꦭ꧀ Date: Sat, 17 Jul 2021 15:33:11 +0800 Subject: Remove parameter names to save from retyping --- pikul.i | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'pikul.i') diff --git a/pikul.i b/pikul.i index aa4c707..e2938ac 100644 --- a/pikul.i +++ b/pikul.i @@ -46,11 +46,9 @@ } %rename("%(strip:[pikul_])s") ""; -void pikul_init(enum pikul_company company, char *provisions[]); -double pikul_cost(const char *origin, const char *destination, double weight, const char *service); -char *pikul_order(const char *order_number, const char *service, const char *sender_name, - const char *sender_phone, const char *origin, const char *sender_address, - const char *sender_postal, const char *receiver_name, const char *receiver_phone, - const char *destination, const char *receiver_address, const char *receiver_postal, - int nitems, char **items[], _Bool insurance, double subtotal); +void pikul_init(enum pikul_company, char *[]); +double pikul_cost(const char *, const char *, double, const char *); +char *pikul_order(const char *, const char *, const char *, const char *, const char *, const char *, + const char *, const char *, const char *, const char *, const char *, const char *, int, + char **[], _Bool, double); void pikul_cleanup(); -- cgit v1.3 From b53957a8fd25bcce8eb98f71b6e9e711b48ce605 Mon Sep 17 00:00:00 2001 From: ꦌꦫꦶꦏ꧀ꦦꦿꦧꦮꦑꦩꦭ꧀ Date: Sun, 18 Jul 2021 11:59:55 +0800 Subject: Insurance is not determined by user's decision It depends on some weight threshhold. --- anteraja.c | 8 ++++---- pikul.c | 6 +++--- pikul.h | 2 +- pikul.i | 6 +----- 4 files changed, 9 insertions(+), 13 deletions(-) (limited to 'pikul.i') diff --git a/anteraja.c b/anteraja.c index 8c151ff..81b709a 100644 --- a/anteraja.c +++ b/anteraja.c @@ -100,7 +100,7 @@ void anteraja_order(const char *order_number, const char *service, const char *s const char *sender_phone, const char *origin, const char *sender_address, const char *sender_postal, const char *receiver_name, const char *receiver_phone, const char *destination, const char *receiver_address, const char *receiver_postal, - int nitems, char **items[], _Bool insurance, double subtotal, char **url, char **post) + int nitems, char **items[], double subtotal, char **url, char **post) { *url = malloc(strlen(shipping.base) + strlen(ORDER_PATH) + 1); sprintf(*url, "%s%s", shipping.base, ORDER_PATH); @@ -142,9 +142,9 @@ void anteraja_order(const char *order_number, const char *service, const char *s + strlen(receiver_postal) + strlen(json) + ORDER_INSURANCE + ORDER_SUBTOTAL - 15 * strlen("%s") - 2 * strlen("%d") + 1); sprintf(*post, ORDER_POST, prefix, order_number, service, (int)total_weight, sender_name, - sender_phone, origin, sender_address, sender_postal, receiver_name, receiver_phone, - destination, receiver_address, receiver_postal, json, insurance ? "true" : "false", - subtotal < 1000.0 ? 1000 :(int)subtotal); + sender_phone, origin, sender_address, sender_postal, receiver_name, receiver_phone, + destination, receiver_address, receiver_postal, json, + total_weight < 1000.0 ? "true" : "false", subtotal < 1000.0 ? 1000 : (int)subtotal); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, *post); } diff --git a/pikul.c b/pikul.c index ed11d9c..8d776a4 100644 --- a/pikul.c +++ b/pikul.c @@ -14,7 +14,7 @@ extern void anteraja_services(const char *, const char *, double, char **, char extern size_t anteraja_services_handle(const char *, size_t, size_t, struct pikul_services **); extern void anteraja_order(const char *, const char *, const char *, const char *, const char *, const char *, const char *, const char *, const char *, const char *, const char *, - const char *, int, char **[], _Bool, double, char **, char **); + const char *, int, char **[], double, char **, char **); extern size_t anteraja_order_handle(const char *, size_t size, size_t nmemb, char **); extern void anteraja_cleanup(); @@ -115,7 +115,7 @@ char *pikul_order(const char *order_number, const char *service, const char *sen const char *sender_phone, const char *origin, const char *sender_address, const char *sender_postal, const char *receiver_name, const char *receiver_phone, const char *destination, const char *receiver_address, const char *receiver_postal, - int nitems, char **items[], _Bool insurance, double subtotal) + int nitems, char **items[], double subtotal) { char *tracking_number = NULL; curl_easy_setopt(curl, CURLOPT_WRITEDATA, &tracking_number); @@ -127,7 +127,7 @@ char *pikul_order(const char *order_number, const char *service, const char *sen anteraja_order(order_number, service, sender_name, sender_phone, origin, sender_address, sender_postal, receiver_name, receiver_phone, destination, receiver_address, receiver_postal, nitems, items, - insurance, subtotal, &url, &post); + subtotal, &url, &post); handler = anteraja_order_handle; break; default: diff --git a/pikul.h b/pikul.h index 07db738..fde0483 100644 --- a/pikul.h +++ b/pikul.h @@ -29,7 +29,7 @@ char *pikul_order(const char *order_number, const char *service, const char *sen const char *sender_phone, const char *origin, const char *sender_address, const char *sender_postal, const char *receiver_name, const char *receiver_phone, const char *destination, const char *receiver_address, const char *receiver_postal, - int nitems, char **items[], _Bool insurance, double subtotal); + int nitems, char **items[], double subtotal); void pikul_cleanup(); #ifdef __cplusplus diff --git a/pikul.i b/pikul.i index e2938ac..331cfcb 100644 --- a/pikul.i +++ b/pikul.i @@ -41,14 +41,10 @@ free($1); } -%typemap(in) _Bool { - $1 = $input; -} - %rename("%(strip:[pikul_])s") ""; void pikul_init(enum pikul_company, char *[]); double pikul_cost(const char *, const char *, double, const char *); char *pikul_order(const char *, const char *, const char *, const char *, const char *, const char *, const char *, const char *, const char *, const char *, const char *, const char *, int, - char **[], _Bool, double); + char **[], double); void pikul_cleanup(); -- cgit v1.3