summaryrefslogtreecommitdiff
path: root/src/register.c
diff options
context:
space:
mode:
authornirav <nirav@teisuu.com>2019-03-28 09:10:52 +0530
committernirav <nirav@teisuu.com>2019-03-28 09:10:52 +0530
commit477e1ba2977435ae7bb75c7dbd95cf28247f89bd (patch)
treece1f9719a7d11bbd47e9adea26dd610bc087962e /src/register.c
parentcc727e972f7fdc871ee1f42cf014151b67422bf0 (diff)
downloadap_client-477e1ba2977435ae7bb75c7dbd95cf28247f89bd.tar.gz
ap_client-477e1ba2977435ae7bb75c7dbd95cf28247f89bd.zip
Move APIs into libgs dirHEADmaster
Diffstat (limited to 'src/register.c')
-rw-r--r--src/register.c128
1 files changed, 0 insertions, 128 deletions
diff --git a/src/register.c b/src/register.c
deleted file mode 100644
index 4885ec5..0000000
--- a/src/register.c
+++ /dev/null
@@ -1,128 +0,0 @@
-#define _POSIX_C_SOURCE 200809L
-#include <err.h>
-#include <string.h>
-#include <stdbool.h>
-#include <jansson.h>
-#include "http.h"
-#include "config.h"
-#include "log.h"
-
-#define CLIENT_NAME "ap_client"
-#define REGISTER_URL "https://%s/api/v1/apps"
-
-struct register_response {
- char *client_id;
- char *client_secret;
-};
-
-static char *get_register_url(const char *domain)
-{
- char *url;
- size_t size;
-
- size = strlen(REGISTER_URL) + strlen(domain) - 1;
- url = malloc(size);
- if (!url) {
- err(1, NULL);
- return NULL;
- }
-
- sprintf(url, REGISTER_URL, domain);
- return url;
-}
-
-static char *get_register_req()
-{
- char *req;
- json_t *json_root;
-
- json_root = json_pack_ex(NULL, 1, "{s:s, s:s, s:s}", "client_name",
- CLIENT_NAME, "redirect_uris", "urn:ietf:wg:oauth:2.0:oob", "scopes",
- "read write push");
- if (!json_root) {
- return NULL;
- }
-
- req = json_dumps(json_root, 0);
- json_decref(json_root);
-
- return req;
-}
-
-static struct register_response *get_register_resp(const char *data)
-{
- struct register_response *resp;
- json_t *json_root;
- json_t *cid, *csec;
-
- json_root = json_loads(data, 0, NULL);
- if (!json_root) {
- return NULL;
- }
-
- if (!json_is_object(json_root)) {
- json_decref(json_root);
- return NULL;
- }
-
- cid = json_object_get(json_root, "client_id");
- csec = json_object_get(json_root, "client_secret");
- if (!json_is_string(cid) || !json_is_string(csec)) {
- json_decref(json_root);
- return NULL;
- }
-
- resp = calloc(1, sizeof(struct register_response));
- resp->client_id = strdup(json_string_value(cid));
- resp->client_secret = strdup(json_string_value(csec));
-
- json_decref(json_root);
- return resp;
-}
-
-int register_app(const char *domain)
-{
- char *url, *req_data, *resp_data;
- struct register_response *resp;
-
- if (!domain || !*domain) {
- log_msg(LOG_WARNING, "register_app", "invalid argument");
- return -1;
- }
-
- url = get_register_url(domain);
- if (!url) {
- return -1;
- }
-
- req_data = get_register_req();
- if (!req_data) {
- free(url);
- return -1;
- }
-
- resp_data = post_request(url, req_data);
- free(url);
- free(req_data);
- if (!resp_data) {
- log_msg(LOG_WARNING, "register_app", "register request failed");
- return -1;
- }
-
- resp = get_register_resp(resp_data);
- free(resp_data);
- if (!resp) {
- log_msg(LOG_WARNING, "register_app", "invalid response");
- return -1;
- }
-
- config_set_client_id(resp->client_id);
- config_set_client_secret(resp->client_secret);
- config_set_instance_url(domain);
-
- free(resp->client_id);
- free(resp->client_secret);
- free(resp);
-
- return 0;
-}