exit(0);
auth_logout(ac.name, ac.token);
+ printf("Set-Cookie: auth=X; Expires=Thu, 01 Jan 1970 00:00:00 GMT\r\n");
respond_JSON_Success();
- } else if (strncmp(path, "/subscribe", 10) == 0 || strncmp(path, "/unsubscribe", 12) == 0) {
+ } else if (strncmp(path, "/subscribe", 10) == 0) {
if (!check_auth(&ac))
exit(0);
- if (path[1] == 'u') {
- if (path[12] != '/') {
- respond_404();
- exit(0);
- }
-
- ret = parse_url_info(path + 13, &info);
- if ((ret & URL_INFO_NAME) == 0) {
- respond_404();
- exit(0);
- }
+ if (path[10] != '/') {
+ respond_404();
+ exit(0);
+ }
- subscription_remove(ac.name, info.name);
- } else {
- if (path[10] != '/') {
- respond_404();
- exit(0);
- }
+ ret = parse_url_info(path + 11, &info);
+ if ((ret & URL_INFO_NAME) == 0) {
+ respond_404();
+ exit(0);
+ }
- ret = parse_url_info(path + 11, &info);
- if ((ret & URL_INFO_NAME) == 0) {
- respond_404();
- exit(0);
- }
+ const char *subscribed = cgi_getentrystr("subscribed");
+ if (strncmp(subscribed, "true", 4) == 0) {
subscription_add(ac.name, info.name);
+ } else if (strncmp(subscribed, "false", 5) == 0) {
+ subscription_remove(ac.name, info.name);
+ } else {
+ respond_JSON_Failure();
+ exit(0);
}
respond_JSON_Success();
} else if (strncmp(path, "/feed", 6) == 0) {
if (!check_auth(&ac))
exit(0);
- if (strncmp(request_method, "POST", 4) != 0) {
- respond_405();
- exit(0);
- }
-
- yajl_gen g;
-
- if (path[7] == 0) { /* No username */
+ if (strncmp(request_method, "POST", 4) == 0) {
const char *clear = cgi_getentrystr("clear");
if (clear != NULL) {
}
blerg_close(b);
respond_JSON_Success();
- } else {
+ }
+ } else if (strncmp(request_method, "GET", 3) == 0) {
+ yajl_gen g;
+
+ if (path[7] == 0) { /* No username */
g = yajl_gen_alloc(&yajl_c, NULL);
yajl_gen_map_open(g);
yajl_gen_map_close(g);
respond_yajl(g);
yajl_gen_free(g);
- }
- } else { /* with username */
- g = yajl_gen_alloc(&yajl_c, NULL);
- yajl_gen_map_open(g);
-
- yajl_gen_string(g, (unsigned char *)"subscribed", 10);
- ret = parse_url_info(path + 8, &info);
- if ((ret & URL_INFO_NAME) == 1) {
- yajl_gen_bool(g, is_subscribed(ac.name, info.name));
- } else {
- yajl_gen_bool(g, 0);
- }
+ } else { /* with username */
+ g = yajl_gen_alloc(&yajl_c, NULL);
+ yajl_gen_map_open(g);
- yajl_gen_map_close(g);
- respond_yajl(g);
- yajl_gen_free(g);
+ yajl_gen_string(g, (unsigned char *)"subscribed", 10);
+ ret = parse_url_info(path + 8, &info);
+ if ((ret & URL_INFO_NAME) == 1) {
+ yajl_gen_bool(g, is_subscribed(ac.name, info.name));
+ } else {
+ yajl_gen_bool(g, 0);
+ }
+
+ yajl_gen_map_close(g);
+ respond_yajl(g);
+ yajl_gen_free(g);
+ }
+ } else {
+ respond_405();
+ exit(0);
}
} else if (strncmp(path, "/passwd", 7) == 0) {
if (!check_auth(&ac))