Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
5 / 5
CRAP
100.00% covered (success)
100.00%
19 / 19
Browser
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
5 / 5
7
100.00% covered (success)
100.00%
19 / 19
 __construct
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
2 / 2
 get
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
8 / 8
 getQueryFromUrl
100.00% covered (success)
100.00%
1 / 1
2
100.00% covered (success)
100.00%
4 / 4
 getParametersFromUrl
100.00% covered (success)
100.00%
1 / 1
2
100.00% covered (success)
100.00%
4 / 4
 getRedirectedPage
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
<?php
namespace Luxian\Test;
use Luxian\Container\ContainerInterface;
use Luxian\Http\Request;
use Luxian\Type\Url;
class Browser
{
    /** @var ContainerInterface */
    private $container;
    public function __construct(ContainerInterface $container)
    {
        $this->container = $container;
    }
    /**
     * Simulate a GET request
     *
     * @param Url $url
     *
     * @return WebPage
     */
    public function get(Url $url): WebPage
    {
        $server = [
            'REQUEST_URI' => $this->getQueryFromUrl($url),
            'HTTP_HOST' => 'example.com',
        ];
        $get = $this->getParametersFromUrl($url);
        $request = new Request($server, $get, [], []);
        $kernel = $this->container->getHttpKernel();
        $response = $kernel->buildResponse($request);
        $page = new WebPage($request, $response);
        return $this->getRedirectedPage($page);
    }
    private function getQueryFromUrl(Url $url): string
    {
        $uri = $url->getPath();
        if ($url->getQuery() !== '') {
            $uri .= '?' . $url->getQuery();
        }
        return $uri;
    }
    private function getParametersFromUrl(Url $url): array
    {
        $parameters = [];
        if ($url->getQuery() !== '') {
            parse_str($url->getQuery(), $parameters);
        }
        return $parameters;
    }
    private function getRedirectedPage(WebPage $page): WebPage
    {
        // TO1DO:
        // - check if response is a redirect
        // - check if the maximum number of redirects was reached
        // - load the redirect destination page
        return $page;
    }
}