summaryrefslogtreecommitdiff
path: root/sicepat.c
blob: e03be36358a2b604c4205fb00460fc4b7c0aad54 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include "shipping.h"
#include "handler.h"

extern CURL *curl;

static const char *status_trail[] = {
	"sicepat",
	"status",
	"code",
	NULL
};

void sicepat_init(char *provisions[], struct shipping *shipping)
{
	static const char *url = "http://api.sicepat.com/customer/";
	shipping->base = malloc(strlen(url) + 1);
	strcpy(shipping->base, url);
	headers((const char *[]){ "api-key", NULL }, provisions, shipping);
}

void sicepat_services(const char *origin, const char *destination, double weight,
		struct shipping *shipping, 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;
}