summaryrefslogtreecommitdiff
path: root/sicepat.c
diff options
context:
space:
mode:
Diffstat (limited to 'sicepat.c')
-rw-r--r--sicepat.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/sicepat.c b/sicepat.c
new file mode 100644
index 0000000..ffa83c3
--- /dev/null
+++ b/sicepat.c
@@ -0,0 +1,46 @@
+#include "shipping.h"
+#include "handler.h"
+
+#define BASE "http://api.sicepat.com/customer/"
+
+extern CURL *curl;
+
+static const char *status_trail[] = {
+ "sicepat",
+ "status",
+ "code",
+ NULL
+};
+
+void sicepat_init(char *provisions[])
+{
+ shipping.base = malloc(strlen(BASE) + 1);
+ strcpy(shipping.base, BASE);
+ headers((const char *[]){ "api-key", NULL }, provisions);
+}
+
+void sicepat_services(const char *origin, const char *destination, double weight, char **url)
+{
+ *url = malloc(strlen(shipping.base) + strlen("tariff?origin=") + strlen(origin)
+ + strlen("&destination=") + strlen(destination) + strlen("&weight=") + 9);
+ sprintf(*url, "%stariff?origin=%s&destination=%s&weight=%f", shipping.base,
+ origin, destination, weight);
+ curl_easy_setopt(curl, CURLOPT_HTTPGET, 1L);
+}
+
+size_t sicepat_services_handle(const char *contents, size_t size, size_t nmemb,
+ struct pikul_services **services)
+{
+ size_t realsize = size * nmemb;
+ handle(SERVICES, contents, realsize, status_trail, (const char *[]){
+ "sicepat",
+ "results",
+ NULL
+ }, (const char *[]){
+ "service",
+ "description",
+ "etd",
+ "tariff"
+ }, services);
+ return realsize;
+}