summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--admin.c30
-rw-r--r--icclient/admin.h15
-rw-r--r--main.c31
3 files changed, 46 insertions, 30 deletions
diff --git a/admin.c b/admin.c
index 3ba9464..a334f3b 100644
--- a/admin.c
+++ b/admin.c
@@ -17,9 +17,31 @@ icclient_admin *icclient_admin_login(const char *username, const char *password,
return admin;
}
-void icclient_admin_newitem(const char *description, const char *comment, const char *price, const char *image_path)
+void icclient_admin_new_admin(const char *username, const char *password, const char *name, bool super,
+ enum icclient_admin_group group, void (*handler)(icclient_fetch_t *))
{
- request(NULL, NULL, &(struct body){ 15, {
+ request(handler, NULL, &(struct body){ 13, {
+ { "mv_todo", "set" },
+ { "mv_data_table", "access" },
+ { "mv_data_key", "username" },
+ { "mv_update_empty", "1" },
+ { "mv_data_fields", "username password name super groups" },
+ { "mv_click", "process_filter" },
+ { "user_id", "NEW" },
+ { "name", name },
+ { "mv_data_function", "insert" },
+ { "username", username },
+ { "password", password },
+ { "super", super ? "1" : "0" },
+ { "groups", group == ICCLIENT_ADMIN_GROUP_CONTENT ? ":CONTENT"
+ : group == ICCLIENT_ADMIN_GROUP_MERCH ? ":MERCH" : ":ORDERS" }
+ }}, "%s", "ui");
+}
+
+void icclient_admin_new_item(const char *description, const char *comment, const char *price, const char *image_path,
+ void (*handler)(icclient_fetch_t *))
+{
+ request(handler, NULL, &(struct body){ 15, {
{ "mv_click", "process_filter" },
{ "mv_data_fields", "sku description prod_group category comment inactive price wholesale image thumb image_large weight nontaxable gift_cert" },
{ "mv_ui", "1" },
@@ -45,9 +67,9 @@ void icclient_admin_newitem(const char *description, const char *comment, const
}}, "%s", "admin/item_edit");
}
-void icclient_admin_logout(icclient_admin *admin)
+void icclient_admin_logout(icclient_admin *admin, void (*handler)(icclient_fetch_t *))
{
- request(NULL, NULL, NULL, "%s", "admin/login");
+ request(handler, NULL, NULL, "%s", "admin/login");
if (admin->name)
free(admin->name);
if (admin->username)
diff --git a/icclient/admin.h b/icclient/admin.h
index cfc89da..dad603d 100644
--- a/icclient/admin.h
+++ b/icclient/admin.h
@@ -6,6 +6,11 @@ struct icclient_admin {
char *password;
char *name;
bool super;
+ enum icclient_admin_group {
+ ICCLIENT_ADMIN_GROUP_CONTENT,
+ ICCLIENT_ADMIN_GROUP_MERCH,
+ ICCLIENT_ADMIN_GROUP_ORDERS
+ } group;
};
#ifdef __cplusplus
@@ -16,12 +21,14 @@ extern "C" {
const char *password, const char *successpage,
const char *nextpage, const char *failpage,
void (*handler)(icclient_fetch_t *));
- void icclient_admin_newitem(const char *description, const char *comment,
- const char *price, const char *image_path);
- void icclient_admin_logout(struct icclient_admin *admin);
+ void icclient_admin_new_admin(const char *username, const char *password, const char *name, bool super,
+ enum icclient_admin_group group, void (*handler)(icclient_fetch_t *));
+ void icclient_admin_new_item(const char *description, const char *comment, const char *price, const char *image_path,
+ void (*handler)(icclient_fetch_t *));
+ void icclient_admin_logout(struct icclient_admin *admin, void (*handler)(icclient_fetch_t *));
#ifdef __cplusplus
}
#endif
-#endif // ICCLIENT_ADMIN_H
+#endif
diff --git a/main.c b/main.c
index b3e4f4f..3fef9ea 100644
--- a/main.c
+++ b/main.c
@@ -4,6 +4,7 @@
#include <stdbool.h>
#include "icclient.h"
#include "icclient/member.h"
+#include "icclient/admin.h"
static void print_catalog(struct icclient_catalog *catalog)
{
@@ -23,36 +24,22 @@ static void print_catalog(struct icclient_catalog *catalog)
}
icclient_free_catalog(catalog);
}
-/*
-static void print_user(icclient_fetch_t *fetch)
+
+static void print(icclient_fetch_t *fetch)
{
printf("%s\n", fetch->data);
}
-*/
+
int main(int argc, char *argv[])
{
icclient_init("https://demo.interchangecommerce.org/i/demo", "/demo/images", NULL);
- icclient_allproducts(print_catalog, NULL);
/*
- char *name_line = NULL;
- printf("\nName: ");
- ssize_t name_nread = getline(&name_line, &(size_t){0}, stdin);
- char *name = malloc(--name_nread + 1);
- strncpy(name, name_line, name_nread);
- free(name_line);
-
- char *pass_line = NULL;
- printf("Pass: ");
- ssize_t pass_nread = getline(&pass_line, &(size_t){0}, stdin);
- char *pass = malloc(--pass_nread + 1);
- strncpy(pass, pass_line, pass_nread);
- free(pass_line);
- pass[pass_nread] = '\0';
-
- struct icclient_member *member = icclient_member_login(name, pass, NULL, NULL, NULL, print_user);
- free(name);
- free(pass);
+ icclient_allproducts(print_catalog, NULL);
+ struct icclient_member *member = icclient_member_login("kirk@icdevgroup.net", "kirk", NULL, NULL, NULL, print);
icclient_member_logout(member);
*/
+ struct icclient_admin *admin = icclient_admin_login("interch", "pass", NULL, NULL, NULL, NULL);
+ icclient_admin_new_admin("Hardware", "pass", "Hardware stuff", 0, ICCLIENT_ADMIN_GROUP_MERCH, NULL);
+ icclient_admin_logout(admin, NULL);
icclient_cleanup();
}