X-Git-Url: http://git.bytex64.net/?a=blobdiff_plain;f=common%2Fapp.c;h=01d5768599dfc03098b4fe198d22ca59a24702b7;hb=d67dd1bf5a247e20141b9907f5a452da73624235;hp=9bc4e4006dec5dfe2ffc217f29d67c30ddf33cac;hpb=3d27274b36b44816c736ea8a411341b5a36556f9;p=blerg.git diff --git a/common/app.c b/common/app.c index 9bc4e40..01d5768 100644 --- a/common/app.c +++ b/common/app.c @@ -1,7 +1,9 @@ +/* Blerg is (C) 2011 The Dominion of Awesome, and is distributed under a + * BSD-style license. Please see the COPYING file for details. + */ #include #include #include -#include #include "app.h" int parse_url_info(const char *url, struct url_info *info) { @@ -17,9 +19,11 @@ int parse_url_info(const char *url, struct url_info *info) { } if (len == 0) return 0; - memcpy(info->author, url, len); - info->author[len] = 0; - info->contents |= URL_INFO_AUTHOR; + if (len > MAX_TAG_LENGTH) + len = MAX_TAG_LENGTH; + memcpy(info->name, url, len); + info->name[len] = 0; + info->contents |= URL_INFO_NAME; if (c == NULL || c[1] == 0) return info->contents; @@ -37,6 +41,34 @@ 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) { + if (str == NULL) + return 0; + if (cookie == NULL) + return 0; + + 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)); @@ -48,31 +80,3 @@ uint64_t *make_sequential_list(uint64_t from, uint64_t to) { return list; } - -void json_generate_one_record(yajl_gen g, const char *author, struct blerg *b, uint64_t record) { - char *data; - char number[21]; - int len; - - if (!blerg_fetch(b, record, &data, &len)) { - fprintf(stderr, "Could not fetch record\n"); - return; - } - - yajl_gen_map_open(g); - if (author != NULL) { - yajl_gen_string(g, "author", 6); - yajl_gen_string(g, author, strlen(author)); - } - yajl_gen_string(g, "record", 6); - snprintf(number, 21, "%llu", record); - yajl_gen_string(g, number, strlen(number)); - yajl_gen_string(g, "timestamp", 9); - yajl_gen_integer(g, blerg_get_timestamp(b, record)); - yajl_gen_string(g, "data", 4); - yajl_gen_string(g, data, len); - yajl_gen_map_close(g); - - free(data); -} -