Add a function for parsing combined auth cookies
authorChip Black <bytex64@bytex64.net>
Thu, 10 Jul 2014 06:55:49 +0000 (01:55 -0500)
committerChip Black <bytex64@bytex64.net>
Thu, 10 Jul 2014 06:55:49 +0000 (01:55 -0500)
common/app.c
common/app.h

index 55ec75a..2fad96e 100644 (file)
@@ -41,6 +41,29 @@ int parse_url_info(const char *url, struct url_info *info) {
        return info->contents;
 }
 
+int parse_auth_cookie(const char *str, struct auth_cookie *cookie) {
+       char *token_begin = strchr(str, '/');
+       if (token_begin == NULL) {
+               return 0;
+       }
+       int len = token_begin - str;
+       if (len > MAX_TAG_LENGTH || len == 0) {
+               return 0;
+       }
+       memcpy(cookie->name, str, len);
+       cookie->name[len] = 0;
+
+       token_begin++;
+       len = strlen(token_begin);
+       if (len != TOKEN_SIZE * 2) {
+               return 0;
+       }
+       memcpy(cookie->token, token_begin, TOKEN_SIZE * 2);
+       cookie->token[TOKEN_SIZE * 2] = 0;
+
+       return 1;
+}
+
 uint64_t *make_sequential_list(uint64_t from, uint64_t to) {
        uint64_t len = to - from + 1;
        uint64_t *list = malloc(len * sizeof(uint64_t));
index 8156274..04d8fa5 100644 (file)
@@ -4,9 +4,9 @@
 #ifndef _APP_H
 #define _APP_H
 
-#include <yajl/yajl_gen.h>
 #include "database.h"
 #include "config.h"
+#include "auth.h"
 
 #define REALM "Blerg"
 
@@ -29,7 +29,13 @@ struct url_info {
        uint64_t record_to;
 };
 
+struct auth_cookie {
+       char name[MAX_TAG_LENGTH + 1];
+       char token[TOKEN_SIZE * 2 + 1];
+};
+
 int parse_url_info(const char *url, struct url_info *info);
+int parse_auth_cookie(const char *str, struct auth_cookie *cookie);
 uint64_t *make_sequential_list(uint64_t from, uint64_t to);
 
 #endif /* _APP_H */