diff options
author | nirav <nirav@teisuu.com> | 2019-03-28 09:10:52 +0530 |
---|---|---|
committer | nirav <nirav@teisuu.com> | 2019-03-28 09:10:52 +0530 |
commit | 477e1ba2977435ae7bb75c7dbd95cf28247f89bd (patch) | |
tree | ce1f9719a7d11bbd47e9adea26dd610bc087962e /src/register.c | |
parent | cc727e972f7fdc871ee1f42cf014151b67422bf0 (diff) | |
download | ap_client-477e1ba2977435ae7bb75c7dbd95cf28247f89bd.tar.gz ap_client-477e1ba2977435ae7bb75c7dbd95cf28247f89bd.zip |
Diffstat (limited to 'src/register.c')
-rw-r--r-- | src/register.c | 128 |
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; -} |