index : website | |
Archlinux32 website - obsolete | gitolite user |
summaryrefslogtreecommitdiff |
author | Erich Eckner <git@eckner.net> | 2019-02-20 10:19:13 +0100 |
---|---|---|
committer | Erich Eckner <git@eckner.net> | 2019-02-20 10:19:13 +0100 |
commit | cf394d1054747ea5334fee6bff6d6a6d20485cb8 (patch) | |
tree | 9c7279ca48337b287848222911bfbf8927e6aa5f /feeds | |
parent | cb8fd086de23e016a465870be8c2175c3f703334 (diff) |
-rw-r--r-- | feeds/feed.php | 77 |
diff --git a/feeds/feed.php b/feeds/feed.php index 11cddbe..65fc372 100644 --- a/feeds/feed.php +++ b/feeds/feed.php @@ -18,9 +18,80 @@ array_splice( 0, 2 ); -// TODO -if ($uri_parts[0] == 'releases') - throw_http_error(501, "Not Implemented", "Sry, the releases-feed is not yet implemented."); +if ($uri_parts[0] == 'releases') { + if (count($uri_parts) != 1) + throw_http_error(501, "Not Implemented", '/feeds/' . implode('/',$uri_parts)); + $available_isos = apcu_fetch('available_isos', $apcu_success); + if ($apcu_success == false || true) { + $ch = curl_init("https://mirror.archlinux32.org/archisos/"); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + $listing = curl_exec($ch); + curl_close($ch); + preg_match_all( + ',<a href="(archlinux-([0-9]{4}\.[0-9]{2}\.[0-9]{2})-([^.]+)\.iso)">\1</a>\s+(\S+)\s+\S+\s+([0-9]+)\s*\n,', + $listing, + $matches, + PREG_SET_ORDER + ); + $available_isos = array(); + foreach ($matches as $match) { + $available_isos[] = array( + 'file' => $match[1], + 'title' => $match[2] . '-' . $match[3], + 'build_date' => strtotime(str_replace('.', '-', $match[2])), + 'build_type' => $match[3], + 'release_date' => $match[4], + 'size' => $match[5] + ); + } + apcu_store('available_isos', $available_isos, 3600); + } + + header('Content-Type: application/rss+xml; charset=utf-8'); + print "<?xml version=\"1.0\" encoding=\"utf-8\"?>"; + print "<rss version=\"2.0\">"; + print "<channel>"; + print "<title>"; + print "Arch Linux 32: Releases"; + print "</title>"; + print "<link>"; + print "https://www.archlinux32.org/download/"; + print "</link>"; + print "<description>"; + print "Release ISOs"; + print "</description>"; + print "<atom:link href=\"https://www.archlinux32.org/feeds/releases/\" rel=\"self\">"; + print "</atom:link>"; + print "<language>"; + print "en-us"; + print "</language>"; + print "<lastBuildDate>"; + print date('Y-m-d', $available_isos[0]['build_date']); + print "</lastBuildDate>"; + foreach ($available_isos as $available_iso) { + print "<item>"; + print "<title>"; + print $available_iso['title']; + print "</title>"; + // TODO: link to iso description (do we want that?) + print "<description>"; + print "</description>"; + print "<pubDate>"; + print date('Y-m-d', $available_iso['release_date']); + print "</pubDate>"; + // TODO: guid + print "<enclosure length=\""; + print date('Y-m-d', $available_iso['size']); + print "\" type=\"application/x-bittorrent\">"; + // TODO: url=\"https://www.archlinux32.org/iso/2019.02.01/archlinux-2019.02.01-x86_64.iso.torrent\">"; + print "</enclosure>"; + print "</item>"; + } + print "</channel>"; + print "</rss>"; + + die(); +} if ($uri_parts[0] == 'packages') { |