<?php use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; class Feeds { public $http; private $_pretty = false; public function __construct() { $this->http = new p3k\HTTP(); } private function respond(Response $response, $code, $params, $headers=[]) { $response->setStatusCode($code); foreach($headers as $k=>$v) { $response->headers->set($k, $v); } $response->headers->set('Content-Type', 'application/json'); $opts = JSON_UNESCAPED_SLASHES; if($this->_pretty) $opts += JSON_PRETTY_PRINT; $response->setContent(json_encode($params, $opts)."\n"); return $response; } public function find(Request $request, Response $response) { $opts = []; if($request->get('timeout')) { $opts['timeout'] = $request->get('timeout'); } if($request->get('max_redirects')) { $opts['max_redirects'] = (int)$request->get('max_redirects'); } if($request->get('pretty')) { $this->_pretty = true; } $url = $request->get('url'); if(!$url) { return $this->respond($response, 400, [ 'error' => 'missing_url', 'error_description' => 'Provide a URL to fetch' ]); } $xray = new p3k\XRay(); $xray->http = $this->http; $res = $xray->feeds($url, $opts); return $this->respond($response, !empty($res['error']) ? 400 : 200, $res); } }