+++ /dev/null
-/* 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 <stdlib.h>
-#include <time.h>
-#include <cgi-util.h>
-#include "database.h"
-#include "escapery.h"
-#include "canned_responses.h"
-#include "app.h"
-#include "config.h"
-
-int fprint_rss(FILE *f, const char *username) {
- struct blerg *b = blerg_open(username);
- uint64_t record_count = blerg_get_record_count(b);
- uint64_t i = (record_count > 50 ? record_count - 50 : 0);
- char *data;
- char *tmp;
- time_t post_time;
- char date[40];
- int len;
-
- fprintf(f,
- "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n"
- "<rss version=\"2.0\">\n"
- "<channel>\n"
- "<title>%s's blërg</title>\n"
- "<link>%s#%s</link>\n"
- "<description>%s</description>\n",
- username,
- BASEURL,
- username,
- "Textual vomit"
- );
-
- while (i < record_count) {
- blerg_fetch(b, i, &data, &len);
- tmp = xml_escape_data(data, len);
- post_time = blerg_get_timestamp(b, i);
- strftime(date, 39, "%a, %d %b %Y %H:%M:%S %Z", gmtime(&post_time));
- fprintf(f,
- "<item>\n"
- "<pubDate>%s</pubDate>\n"
- "<guid>%sget/%s/%llu</guid>\n"
- "<description>%s</description>\n"
- "</item>\n",
- date,
- BASEURL, username, i,
- tmp
- );
- free(tmp);
- free(data);
- i++;
- }
- blerg_close(b);
-
- fprintf(f,
- "</channel>\n"
- "</rss>\n"
- );
-}
-
-int main (int argc, char *argv) {
- char *path;
- char *request_method;
- int ret;
- struct url_info info;
-
- request_method = getenv("REQUEST_METHOD");
- if (request_method == NULL) {
- fprintf(stderr, "Request method is null!?\n");
- exit(0);
- }
-
- if (strncmp(request_method, "GET", 4) != 0) {
- respond_405();
- exit(0);
- }
-
- path = getenv("PATH_INFO");
- if (path == NULL) {
- respond_404();
- exit(0);
- }
-
- if (path[0] != '/') {
- respond_404();
- exit(0);
- }
-
- ret = parse_url_info(path + 1, &info);
- if ((ret & URL_INFO_NAME) == 0) {
- respond_404();
- exit(0);
- }
-
- if (!blerg_exists(info.name)) {
- respond_404();
- exit(0);
- }
-
- printf("Content-type: application/rss+xml\r\n\r\n");
-
- fprint_rss(stdout, info.name);
-
-}