From 4d80ef582eae06edd785db3d0e4bdf94d83cf537 Mon Sep 17 00:00:00 2001 From: emkael Date: Tue, 27 Dec 2016 14:37:42 +0100 Subject: * initial commit --- http/.gitattributes | 1 + http/.htaccess | 2 + http/_stats | 1 + http/index.php | 108 +++++++++++++++++++++++++++++++++++++++++++++++ http/templates/.htaccess | 1 + http/templates/atom.tpl | 21 +++++++++ http/templates/rss.tpl | 19 +++++++++ 7 files changed, 153 insertions(+) create mode 100644 http/.gitattributes create mode 100644 http/.htaccess create mode 120000 http/_stats create mode 100644 http/index.php create mode 100644 http/templates/.htaccess create mode 100644 http/templates/atom.tpl create mode 100644 http/templates/rss.tpl (limited to 'http') diff --git a/http/.gitattributes b/http/.gitattributes new file mode 100644 index 0000000..7daec9b --- /dev/null +++ b/http/.gitattributes @@ -0,0 +1 @@ +config.json filter=git-crypt diff=git-crypt diff --git a/http/.htaccess b/http/.htaccess new file mode 100644 index 0000000..9f57019 --- /dev/null +++ b/http/.htaccess @@ -0,0 +1,2 @@ +RewriteEngine On +RewriteRule (.*)/(.*).xml index.php?user=$1&format=$2 diff --git a/http/_stats b/http/_stats new file mode 120000 index 0000000..20da1a2 --- /dev/null +++ b/http/_stats @@ -0,0 +1 @@ +../_stats/ \ No newline at end of file diff --git a/http/index.php b/http/index.php new file mode 100644 index 0000000..cf2f636 --- /dev/null +++ b/http/index.php @@ -0,0 +1,108 @@ + strtotime('-15 minutes')) { + $content = json_decode(file_get_contents($cacheFile)); + } + else { + $content = $cb->statuses_userTimeline([ + 'screen_name' => $user, + 'count' => 200, + 'exclude_replies' => TRUE + ], TRUE); + if (isset($content->rate)) { + unset($content->rate); + } + file_put_contents($cacheFile, json_encode($content)); + $cacheTime = time(); + } + + if ($content->httpstatus !== 200) { + header('HTTP/1.1 '.$content->httpstatus); + if (isset($content->error)) { + print $content->error; + die(); + } + if (isset($content->errors)) { + foreach ($content->errors as $error) { + print $error->message.' ('.$error->code.')
'; + } + die(); + } + } + + unset($content->httpstatus); + + if ($spamFilter) { + $filteredContent = []; + foreach ($content as $c) { + $urls = array_map( + function($url) { + return $url->expanded_url; + }, + $c->entities->urls + ); + if (!$urls) { + $filteredContent[] = $c; + } else { + sort($urls); + $urlHash = md5(implode('|', $urls)); + $filteredContent[$urlHash] = $c; + } + } + usort($filteredContent, function($c1, $c2) { return strcmp($c1->id_str, $c2->id_str); }); + array_reverse($filteredContent); + $content = $filteredContent; + } + + require_once('smarty3/Smarty.class.php'); + + $smarty = new Smarty(); + $smarty->setCacheDir('cache/smarty'); + $smarty->setCompileDir('cache/smarty/compile'); + $smarty->setTemplateDir('templates'); + + $smarty->assign('cacheTime', $cacheTime); + $smarty->assign('user', $user); + $smarty->assign('content', $content); + + $format = $_GET['format']; + + switch ($format) { + case 'rss': + header('Content-Type: application/rss+xml'); + $smarty->display('rss.tpl'); + break; + case 'atom': + default: + header('Content-Type: application/atom+xml'); + $smarty->display('atom.tpl'); + break; + } + +} + +?> diff --git a/http/templates/.htaccess b/http/templates/.htaccess new file mode 100644 index 0000000..3a42882 --- /dev/null +++ b/http/templates/.htaccess @@ -0,0 +1 @@ +Deny from all diff --git a/http/templates/atom.tpl b/http/templates/atom.tpl new file mode 100644 index 0000000..e7e28f5 --- /dev/null +++ b/http/templates/atom.tpl @@ -0,0 +1,21 @@ + + + {$user}'s timeline + + http://emkael.info/tulz/twitterRSS/{$user} + {$cacheTime|date_format:"c"} + {foreach from=$content item=item} + + {$item->text|escape} + + http://emkael.info/tulz/twitterRSS/{$item->user->id_str}/{$item->id_str} + {$item->created_at|date_format:"c"} + text|escape} ]]> + {if isset($item->user)} + + {$item->user->screen_name} + + {/if} + + {/foreach} + diff --git a/http/templates/rss.tpl b/http/templates/rss.tpl new file mode 100644 index 0000000..f95a462 --- /dev/null +++ b/http/templates/rss.tpl @@ -0,0 +1,19 @@ + + + + {$user}'s timeline + https://twitter.com/{$user} + {$cacheTime|date_format:"D, d M Y H:i:s O"} + {foreach from=$content item=item} + + {$item->text|escape} + https://twitter.com/{$user}/status/{$item->id_str} + {if isset($item->user)} + http://emkael.info/tulz/twitterRSS/{$item->user->id_str}/{$item->id_str} + {/if} + text|escape} ]]> + {$item->created_at|date_format:"D, d M Y H:i:s O"} + + {/foreach} + + -- cgit v1.2.3