Fix ordering in perl subscription_list
[blerg.git] / common / app.c
index 9bc4e40..01d5768 100644 (file)
@@ -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 <stdio.h>
 #include <string.h>
 #include <stdlib.h>
-#include <yajl/yajl_gen.h>
 #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);
-}
-