Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
47 / 47
CRAP
100.00% covered (success)
100.00%
53 / 53
RequestInfo
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
47 / 47
48
100.00% covered (success)
100.00%
53 / 53
 __construct
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
2 / 2
 fromEnv
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 newWithOverwrites
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 isSecure
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%
1 / 1
 getArgv
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 getArgc
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 getMethod
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
2 / 2
 getUri
100.00% covered (success)
100.00%
1 / 1
2
100.00% covered (success)
100.00%
4 / 4
 getHost
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 getConnection
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 getUserAgent
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 getServerAddress
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 getClientAddress
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 getClientHost
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 getClientPort
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 getClientUser
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 getRedirectClientUser
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 getRequestTimeFloat
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 getRequestTime
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 getAcceptedContentTypes
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 getAcceptedCharsets
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 getAcceptedEncoding
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 getAcceptedLanguage
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 getQueryString
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 getReferer
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 getAuthType
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 getAuthDigest
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 getAuthUser
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 getAuthPassword
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 getContentType
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 getContentLength
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 getPhpSelf
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 getGatewayInterface
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 getServerName
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 getServerSoftware
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 getServerProtocol
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 getServerAdmin
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 getServerPort
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 getServerSignature
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 getPathTranslated
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 getDocumentRoot
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 getScriptName
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 getScriptFilename
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 getPathInfo
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 getOriginalPathInfo
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 getCustomValue
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
<?php declare(strict_types=1);
/**
 * Copyright (c) 2017 Holger Woltersdorf & Contributors
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 */
namespace IceHawk\IceHawk\Defaults;
use IceHawk\IceHawk\Interfaces\ProvidesRequestInfo;
/**
 * Class RequestInfo
 * @package IceHawk\IceHawk
 */
final class RequestInfo implements ProvidesRequestInfo
{
    /** @var array */
    private $serverData;
    /**
     * @param array $serverData
     */
    public function __construct( array $serverData )
    {
        $this->serverData = $serverData;
    }
    public static function fromEnv() : self
    {
        return new self( $_SERVER );
    }
    public function newWithOverwrites( array $array ) : ProvidesRequestInfo
    {
        return new self( array_merge( $this->serverData, $array ) );
    }
    public function isSecure() : bool
    {
        $httpsValue = (string)$this->get( 'HTTPS' );
        return (strcasecmp( $httpsValue, 'on' ) === 0);
    }
    /**
     * @param string $key
     *
     * @return mixed
     */
    private function get( string $key )
    {
        return $this->serverData[ $key ] ?? null;
    }
    public function getArgv() : array
    {
        return (array)$this->get( 'argv' );
    }
    public function getArgc() : int
    {
        return (int)$this->get( 'argc' );
    }
    public function getMethod() : string
    {
        $method = (string)$this->get( 'REQUEST_METHOD' );
        return strtoupper( $method );
    }
    public function getUri() : string
    {
        $uri = (string)$this->get( 'REQUEST_URI' );
        if ( '' !== $uri )
        {
            return preg_replace( [ '#\/+#', '#\?.*$#' ], [ '/', '' ], $uri );
        }
        return '/';
    }
    public function getHost() : string
    {
        return (string)$this->get( 'HTTP_HOST' );
    }
    public function getConnection() : string
    {
        return (string)$this->get( 'HTTP_CONNECTION' );
    }
    public function getUserAgent() : string
    {
        return (string)$this->get( 'HTTP_USER_AGENT' );
    }
    public function getServerAddress() : string
    {
        return (string)$this->get( 'SERVER_ADDR' );
    }
    public function getClientAddress() : string
    {
        return (string)$this->get( 'REMOTE_ADDR' );
    }
    public function getClientHost() : string
    {
        return (string)$this->get( 'REMOTE_HOST' );
    }
    public function getClientPort() : string
    {
        return (string)$this->get( 'REMOTE_PORT' );
    }
    public function getClientUser() : string
    {
        return (string)$this->get( 'REMOTE_USER' );
    }
    public function getRedirectClientUser() : string
    {
        return (string)$this->get( 'REDIRECT_REMOTE_USER' );
    }
    public function getRequestTimeFloat() : float
    {
        return (float)$this->get( 'REQUEST_TIME_FLOAT' );
    }
    public function getRequestTime() : string
    {
        return (string)$this->get( 'REQUEST_TIME' );
    }
    public function getAcceptedContentTypes() : string
    {
        return (string)$this->get( 'HTTP_ACCEPT' );
    }
    public function getAcceptedCharsets() : string
    {
        return (string)$this->get( 'HTTP_ACCEPT_CHARSET' );
    }
    public function getAcceptedEncoding() : string
    {
        return (string)$this->get( 'HTTP_ACCEPT_ENCODING' );
    }
    public function getAcceptedLanguage() : string
    {
        return (string)$this->get( 'HTTP_ACCEPT_LANGUAGE' );
    }
    public function getQueryString() : string
    {
        return (string)$this->get( 'QUERY_STRING' );
    }
    public function getReferer() : string
    {
        return (string)$this->get( 'HTTP_REFERER' );
    }
    public function getAuthType() : string
    {
        return (string)$this->get( 'AUTH_TYPE' );
    }
    public function getAuthDigest() : string
    {
        return (string)$this->get( 'PHP_AUTH_DIGEST' );
    }
    public function getAuthUser() : string
    {
        return (string)$this->get( 'PHP_AUTH_USER' );
    }
    public function getAuthPassword() : string
    {
        return (string)$this->get( 'PHP_AUTH_PW' );
    }
    public function getContentType() : string
    {
        return (string)$this->get( 'CONTENT_TYPE' );
    }
    public function getContentLength() : string
    {
        return (string)$this->get( 'CONTENT_LENGTH' );
    }
    public function getPhpSelf() : string
    {
        return (string)$this->get( 'PHP_SELF' );
    }
    public function getGatewayInterface() : string
    {
        return (string)$this->get( 'GATEWAY_INTERFACE' );
    }
    public function getServerName() : string
    {
        return (string)$this->get( 'SERVER_NAME' );
    }
    public function getServerSoftware() : string
    {
        return (string)$this->get( 'SERVER_SOFTWARE' );
    }
    public function getServerProtocol() : string
    {
        return (string)$this->get( 'SERVER_PROTOCOL' );
    }
    public function getServerAdmin() : string
    {
        return (string)$this->get( 'SERVER_ADMIN' );
    }
    public function getServerPort() : string
    {
        return (string)$this->get( 'SERVER_PORT' );
    }
    public function getServerSignature() : string
    {
        return (string)$this->get( 'SERVER_SIGNATURE' );
    }
    public function getPathTranslated() : string
    {
        return (string)$this->get( 'PATH_TRANSLATED' );
    }
    public function getDocumentRoot() : string
    {
        return (string)$this->get( 'DOCUMENT_ROOT' );
    }
    public function getScriptName() : string
    {
        return (string)$this->get( 'SCRIPT_NAME' );
    }
    public function getScriptFilename() : string
    {
        return (string)$this->get( 'SCRIPT_FILENAME' );
    }
    public function getPathInfo() : string
    {
        return (string)$this->get( 'PATH_INFO' );
    }
    public function getOriginalPathInfo() : string
    {
        return (string)$this->get( 'ORIG_PATH_INFO' );
    }
    public function getCustomValue( string $key ) : string
    {
        return (string)$this->get( $key );
    }
}