summaryrefslogtreecommitdiff
path: root/sicepat.c
diff options
context:
space:
mode:
Diffstat (limited to 'sicepat.c')
-rw-r--r--sicepat.c85
1 files changed, 85 insertions, 0 deletions
diff --git a/sicepat.c b/sicepat.c
new file mode 100644
index 0000000..549bdfc
--- /dev/null
+++ b/sicepat.c
@@ -0,0 +1,85 @@
+#include <stdlib.h>
+#include <string.h>
+#include "private.h"
+
+#define BASE "http://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;
+}