#include #include #include "private.h" #define BASE "https://api.sicepat.com/customer/" #define ORIGINS "origin" #define DESTINATIONS "destination" const char **sicepat_init(char *provisions[]) { struct shipping *shipping = shipping_list[PIKUL_SICEPAT]; shipping->base = malloc(strlen(BASE) + 1); strcpy(shipping->base, BASE); static const char *status_trail[] = { "sicepat", "status", "code", NULL }; shipping->status_trail = status_trail; static const char *fields[] = { "api-key", NULL }; return fields; } const char **sicepat_origins() { struct shipping *shipping = shipping_list[PIKUL_SICEPAT]; shipping->url = malloc(strlen(BASE) + strlen(ORIGINS) + 1); sprintf(shipping->url, "%s%s", BASE, ORIGINS); static const char *trail[] = { "sicepat", "results", NULL }; shipping->trail = trail; static const char *attributes[] = { "origin_code", NULL, "origin_name", NULL }; return attributes; } const char **sicepat_destinations() { struct shipping *shipping = shipping_list[PIKUL_SICEPAT]; shipping->url = malloc(strlen(BASE) + strlen(DESTINATIONS) + 1); sprintf(shipping->url, "%s%s", BASE, DESTINATIONS); static const char *trail[] = { "sicepat", "results", NULL }; shipping->trail = trail; static const char *attributes[] = { "destination_code", "subdistrict", "city", "province" }; return attributes; } const char **sicepat_services(const char *origin, const char *destination, double weight) { struct shipping *shipping = shipping_list[PIKUL_SICEPAT]; shipping->url = malloc(strlen(shipping->base) + strlen("tariff?origin=") + strlen(origin) + strlen("&destination=") + strlen(destination) + strlen("&weight=") + 9); sprintf(shipping->url, "%stariff?origin=%s&destination=%s&weight=%f", shipping->base, origin, destination, weight); static const char *trail[] = { "sicepat", "results", NULL }; shipping->trail = trail; static const char *attributes[] = { "service", "description", "etd", "tariff" }; return attributes; }