<?php namespace Patchouli; use FWIF\FWIF; require_once __DIR__ . '/../startup.php'; $request = Http\HttpRequest::create(); header('Content-Type: ' . (PAT_DEBUG ? 'text/plain; charset=us-ascii' : FWIF::CONTENT_TYPE)); $tPlat = Platform::getUser(); // ONLY EXACT MATCHES ↓ if($request->match('GET', '/packages')) { $tags = explode(';', (string)$request->getQueryParam('tags', FILTER_SANITIZE_STRING)); $packages = empty($tags) ? Patchouli::getPackages() : Patchouli::getPackagesWithTags($tags); echo FWIF::encode($packages); return; } if($request->match('GET', '/')) { header('Content-Type: text/html; charset=utf-8'); echo '<!doctype html><title>Patchouli</title><pre style="font-family:IPAMonaPGothic,\'IPA モナー Pゴシック\',Monapo,Mona,\'MS PGothic\',\'MS Pゴシック\',sans-serif;font-size:16px;line-height:18px;">'; readfile(PAT_ROOT . '/patchouli.txt'); echo '</pre>'; return; } // REGEX MATCHES ↓ if($request->match('GET', '#^/packages/([a-z0-9-]+)/?$#', $args)) { try { $packageInfo = Patchouli::getPackage($args[0]); } catch(PackageNotFoundException $ex) { http_response_code(404); $packageInfo = new ErrorResponse(404, 'Package not found.'); } echo FWIF::encode($packageInfo); return; } echo FWIF::encode(new ErrorResponse(404, 'Path not found.'));