diff options
author | nirav <nirav@teisuu.com> | 2019-03-10 13:30:19 +0530 |
---|---|---|
committer | Dandelion <nirav@teisuu.com> | 2019-03-10 13:30:19 +0530 |
commit | 7e8ea36eb8106b4847af13a27a3e8f3177d25809 (patch) | |
tree | 084b59cf020d82985cdcb09bad18721cd5ecdf7e /src/auth.c | |
parent | bd7b0be8978cfd30ac72cf36021153b2a7d68051 (diff) | |
download | ap_client-7e8ea36eb8106b4847af13a27a3e8f3177d25809.tar.gz ap_client-7e8ea36eb8106b4847af13a27a3e8f3177d25809.zip |
Refactor main.c and auth.c
Diffstat (limited to 'src/auth.c')
-rw-r--r-- | src/auth.c | 75 |
1 files changed, 43 insertions, 32 deletions
@@ -9,14 +9,14 @@ #include "http.h" #define CLIENT_NAME "ap_client" +#define PROTOCOL_PREFIX "https://" -char *instance_domain = NULL; -char *client_id = NULL; -char *client_secret = NULL; -char *access_token = NULL; -char *scope = NULL; +char *instance_domain; +char *client_id; +char *client_secret; +char *access_token; +char *scope; -static char *protocol = "https://"; static char *app_register_url = "/api/v1/apps"; static char *login_url = "/oauth/token"; @@ -29,9 +29,9 @@ struct register_call_arg { static void *register_call(void *req_arg) { - struct register_call_arg *arg = NULL; - char *resp = NULL; - json_t *root = NULL; + struct register_call_arg *arg; + char *resp; + json_t *root; arg = (struct register_call_arg *)req_arg; if (!arg || !(arg->url)) { @@ -105,16 +105,27 @@ error: int register_app(const char *instance, void (*callback)(bool success)) { + size_t size; + char *instance_prefix; + char *url, *req_data; + struct register_call_arg *arg; + json_t *root; + json_error_t error; + pthread_t t; + if (!instance || strlen(instance) < 1 || !callback) { fprintf(stderr, "register_app(): invalid argument\n"); return -1; } - json_t *root; - json_error_t error; - pthread_t t; - char *url, *req_data; - struct register_call_arg *arg; + size = sizeof(PROTOCOL_PREFIX) + sizeof(instance) + 1; + instance_prefix = malloc(size); + if (!instance_prefix) { + err(1, "register_app(): malloc failed"); + return -1; + } + strlcpy(instance_prefix, PROTOCOL_PREFIX, size); + strlcat(instance_prefix, instance, size); root = json_pack_ex(&error, 1, "{s:s, s:s, s:s}", "client_name", CLIENT_NAME, "redirect_uris", "urn:ietf:wg:oauth:2.0:oob", "scopes", @@ -133,15 +144,15 @@ int register_app(const char *instance, void (*callback)(bool success)) return -1; } - size_t s = - strlen(protocol) + strlen(instance) + strlen(app_register_url) + 1; - url = malloc(s); + size = strlen(instance_prefix) + strlen(app_register_url) + 1; + url = malloc(size); if (!url) { err(1, "register_app(): malloc failed"); return -1; } - sprintf(url, "%s%s%s", protocol, instance, app_register_url); + strlcpy(url, instance_prefix, size); + strlcat(url, app_register_url, size); arg = calloc(1, sizeof(struct register_call_arg)); if (!arg) { @@ -149,7 +160,7 @@ int register_app(const char *instance, void (*callback)(bool success)) return -1; } arg->url = url; - arg->domain = strdup(instance); + arg->domain = instance_prefix; arg->post_data = req_data; arg->callback = callback; @@ -238,6 +249,13 @@ error: int login( const char *email, const char *password, void (*callback)(bool success)) { + json_t *root; + json_error_t error; + pthread_t t; + size_t size; + char *url, *req_data; + struct login_call_arg *arg; + if (!email || strlen(email) < 1 || !password || strlen(password) < 1) { fprintf(stderr, "login(): invalid argument\n"); return -1; @@ -253,14 +271,8 @@ int login( return -1; } - json_t *root; - json_error_t error; - pthread_t t; - char *url, *req_data; - struct login_call_arg *arg; - - root = json_pack_ex(&error, 1, "{s:s, s:s, s:s, s:s, s:s}", "client_id", client_id, - "client_secret", client_secret, "grant_type", "password", + root = json_pack_ex(&error, 1, "{s:s, s:s, s:s, s:s, s:s}", "client_id", + client_id, "client_secret", client_secret, "grant_type", "password", "username", email, "password", password); if (!root) { @@ -276,15 +288,14 @@ int login( return -1; } - size_t s = strlen(protocol) + strlen(instance_domain) + - strlen(login_url) + 1; - url = malloc(s); + size = strlen(instance_domain) + strlen(login_url) + 1; + url = malloc(size); if (!url) { err(1, "login(): malloc failed"); return -1; } - - sprintf(url, "%s%s%s", protocol, instance_domain, login_url); + strlcpy(url, instance_domain, size); + strlcat(url, login_url, size); arg = calloc(1, sizeof(struct login_call_arg)); if (!arg) { |