Passed
Push — master ( ee7ada...86e322 )
by Benjamin
04:09 queued 02:02
created

HttpTransport::getConnectTimeout()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 0
dl 0
loc 3
ccs 2
cts 2
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php
2
3
/*
4
 * This file is part of the php-gelf package.
5
 *
6
 * (c) Benjamin Zikarsky <http://benjamin-zikarsky.de>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace Gelf\Transport;
13
14
use Gelf\MessageInterface;
15
use Gelf\Encoder\CompressedJsonEncoder;
16
use Gelf\Encoder\JsonEncoder as DefaultEncoder;
17
use RuntimeException;
18
19
/**
20
 * HttpTransport allows the transfer of GELF-messages to an compatible
21
 * GELF-HTTP-backend as described in
22
 * http://www.graylog2.org/resources/documentation/sending/gelfhttp
23
 *
24
 * It can also act as a direct publisher
25
 *
26
 * @author Benjamin Zikarsky <[email protected]>
27
 */
28
class HttpTransport extends AbstractTransport
29
{
30
    const DEFAULT_HOST = "127.0.0.1";
0 ignored issues
show
Coding Style Comprehensibility introduced by
The string literal 127.0.0.1 does not require double quotes, as per coding-style, please use single quotes.

PHP provides two ways to mark string literals. Either with single quotes 'literal' or with double quotes "literal". The difference between these is that string literals in double quotes may contain variables with are evaluated at run-time as well as escape sequences.

String literals in single quotes on the other hand are evaluated very literally and the only two characters that needs escaping in the literal are the single quote itself (\') and the backslash (\\). Every other character is displayed as is.

Double quoted string literals may contain other variables or more complex escape sequences.

<?php

$singleQuoted = 'Value';
$doubleQuoted = "\tSingle is $singleQuoted";

print $doubleQuoted;

will print an indented: Single is Value

If your string literal does not contain variables or escape sequences, it should be defined using single quotes to make that fact clear.

For more information on PHP string literals and available escape sequences see the PHP core documentation.

Loading history...
31
    const DEFAULT_PORT = 12202;
32
    const DEFAULT_PATH = "/gelf";
0 ignored issues
show
Coding Style Comprehensibility introduced by
The string literal /gelf does not require double quotes, as per coding-style, please use single quotes.

PHP provides two ways to mark string literals. Either with single quotes 'literal' or with double quotes "literal". The difference between these is that string literals in double quotes may contain variables with are evaluated at run-time as well as escape sequences.

String literals in single quotes on the other hand are evaluated very literally and the only two characters that needs escaping in the literal are the single quote itself (\') and the backslash (\\). Every other character is displayed as is.

Double quoted string literals may contain other variables or more complex escape sequences.

<?php

$singleQuoted = 'Value';
$doubleQuoted = "\tSingle is $singleQuoted";

print $doubleQuoted;

will print an indented: Single is Value

If your string literal does not contain variables or escape sequences, it should be defined using single quotes to make that fact clear.

For more information on PHP string literals and available escape sequences see the PHP core documentation.

Loading history...
33
    
34
    const AUTO_SSL_PORT = 443;
35
    
36
    /**
37
     * @var string
38
     */
39
    protected $host;
40
41
    /**
42
     * @var int
43
     */
44
    protected $port;
45
46
    /**
47
     * @var string
48
     */
49
    protected $path;
50
51
    /**
52
     * @var StreamSocketClient
53
     */
54
    protected $socketClient;
55
56
    /**
57
     * @var SslOptions|null
58
     */
59
    protected $sslOptions = null;
60
61
    /**
62
     * @var string|null
63
     */
64
    protected $authentication = null;
65
66
    /**
67
     * Class constructor
68
     *
69
     * @param string|null     $host       when NULL or empty default-host is used
70
     * @param int|null        $port       when NULL or empty default-port is used
71
     * @param string|null     $path       when NULL or empty default-path is used
72
     * @param SslOptions|null $sslOptions when null not SSL is used
73
     */
74 15
    public function __construct(
75
        $host = self::DEFAULT_HOST,
76
        $port = self::DEFAULT_PORT,
77
        $path = self::DEFAULT_PATH,
78
        SslOptions $sslOptions = null
79
    ) {
80 15
        $this->host = $host;
81 15
        $this->port = $port;
82 15
        $this->path = $path;
83
84 15
        if ($port == self::AUTO_SSL_PORT && $sslOptions == null) {
85 1
            $sslOptions = new SslOptions();
86 1
        }
87
88 15
        $this->sslOptions = $sslOptions;
89
90 15
        $this->messageEncoder = new DefaultEncoder();
91 15
        $this->socketClient = new StreamSocketClient(
0 ignored issues
show
Coding Style introduced by
Equals sign not aligned with surrounding assignments; expected 3 spaces but found 1 space

This check looks for multiple assignments in successive lines of code. It will report an issue if the operators are not in a straight line.

To visualize

$a = "a";
$ab = "ab";
$abc = "abc";

will produce issues in the first and second line, while this second example

$a   = "a";
$ab  = "ab";
$abc = "abc";

will produce no issues.

Loading history...
92 15
            $this->getScheme(),
93 15
            $this->host,
94 15
            $this->port,
95 15
            $this->getContext()
96 15
        );
97 15
    }
98
99
    /**
100
     * Creates a HttpTransport from a URI
101
     *
102
     * Supports http and https schemes, port-, path- and auth-definitions
103
     * If the port is ommitted 80 and 443 are used respectively.
104
     * If a username but no password is given, and empty password is used.
105
     * If a https URI is given, the provided SslOptions (with a fallback to
106
     * the default SslOptions) are used.
107
     *
108
     * @param  string          $url
109
     * @param  SslOptions|null $sslOptions
110
     *
111
     * @return HttpTransport
112
     */
113 3
    public static function fromUrl($url, SslOptions $sslOptions = null)
114
    {
115 3
        $parsed = parse_url($url);
116
        
117
        // check it's a valid URL
118 3
        if (false === $parsed || !isset($parsed['host']) || !isset($parsed['scheme'])) {
119 1
            throw new \InvalidArgumentException("$url is not a valid URL");
0 ignored issues
show
Coding Style Best Practice introduced by
As per coding-style, please use concatenation or sprintf for the variable $url instead of interpolation.

It is generally a best practice as it is often more readable to use concatenation instead of interpolation for variables inside strings.

// Instead of
$x = "foo $bar $baz";

// Better use either
$x = "foo " . $bar . " " . $baz;
$x = sprintf("foo %s %s", $bar, $baz);
Loading history...
120
        }
121
        
122
        // check it's http or https
123 2
        $scheme = strtolower($parsed['scheme']);
124 2
        if (!in_array($scheme, array('http', 'https'))) {
125 1
            throw new \InvalidArgumentException("$url is not a valid http/https URL");
0 ignored issues
show
Coding Style Best Practice introduced by
As per coding-style, please use concatenation or sprintf for the variable $url instead of interpolation.

It is generally a best practice as it is often more readable to use concatenation instead of interpolation for variables inside strings.

// Instead of
$x = "foo $bar $baz";

// Better use either
$x = "foo " . $bar . " " . $baz;
$x = sprintf("foo %s %s", $bar, $baz);
Loading history...
126
        }
127
128
        // setup defaults
129 1
        $defaults = array('port' => 80, 'path' => '', 'user' => null, 'pass' => '');
130
131
        // change some defaults for https
132 1
        if ($scheme == 'https') {
133 1
            $sslOptions = $sslOptions ?: new SslOptions();
0 ignored issues
show
Coding Style introduced by
Equals sign not aligned with surrounding assignments; expected 7 spaces but found 1 space

This check looks for multiple assignments in successive lines of code. It will report an issue if the operators are not in a straight line.

To visualize

$a = "a";
$ab = "ab";
$abc = "abc";

will produce issues in the first and second line, while this second example

$a   = "a";
$ab  = "ab";
$abc = "abc";

will produce no issues.

Loading history...
134 1
            $defaults['port'] = 443;
135 1
        }
136
         
137
        // merge defaults and real data and build transport
138 1
        $parsed = array_merge($defaults, $parsed);
0 ignored issues
show
Coding Style introduced by
Equals sign not aligned with surrounding assignments; expected 4 spaces but found 1 space

This check looks for multiple assignments in successive lines of code. It will report an issue if the operators are not in a straight line.

To visualize

$a = "a";
$ab = "ab";
$abc = "abc";

will produce issues in the first and second line, while this second example

$a   = "a";
$ab  = "ab";
$abc = "abc";

will produce no issues.

Loading history...
139 1
        $transport = new static($parsed['host'], $parsed['port'], $parsed['path'], $sslOptions);
140
141
        // add optional authentication
142 1
        if ($parsed['user']) {
143 1
            $transport->setAuthentication($parsed['user'], $parsed['pass']);
144 1
        }
145
146 1
        return $transport;
147
    }
148
149
    /**
150
     * Sets HTTP basic authentication
151
     *
152
     * @param string $username
153
     * @param string $password
154
     */
155 2
    public function setAuthentication($username, $password)
156
    {
157 2
        $this->authentication = $username . ":" . $password;
0 ignored issues
show
Coding Style Comprehensibility introduced by
The string literal : does not require double quotes, as per coding-style, please use single quotes.

PHP provides two ways to mark string literals. Either with single quotes 'literal' or with double quotes "literal". The difference between these is that string literals in double quotes may contain variables with are evaluated at run-time as well as escape sequences.

String literals in single quotes on the other hand are evaluated very literally and the only two characters that needs escaping in the literal are the single quote itself (\') and the backslash (\\). Every other character is displayed as is.

Double quoted string literals may contain other variables or more complex escape sequences.

<?php

$singleQuoted = 'Value';
$doubleQuoted = "\tSingle is $singleQuoted";

print $doubleQuoted;

will print an indented: Single is Value

If your string literal does not contain variables or escape sequences, it should be defined using single quotes to make that fact clear.

For more information on PHP string literals and available escape sequences see the PHP core documentation.

Loading history...
158 2
    }
159
160
    /**
161
     * Sends a Message over this transport
162
     *
163
     * @param MessageInterface $message
164
     *
165
     * @return int the number of bytes sent
166
     */
167 6
    public function send(MessageInterface $message)
168
    {
169 6
        $messageEncoder = $this->getMessageEncoder();
170 6
        $rawMessage = $messageEncoder->encode($message);
0 ignored issues
show
Coding Style introduced by
Equals sign not aligned with surrounding assignments; expected 5 spaces but found 1 space

This check looks for multiple assignments in successive lines of code. It will report an issue if the operators are not in a straight line.

To visualize

$a = "a";
$ab = "ab";
$abc = "abc";

will produce issues in the first and second line, while this second example

$a   = "a";
$ab  = "ab";
$abc = "abc";

will produce no issues.

Loading history...
171
172
        $request = array(
173 6
            sprintf("POST %s HTTP/1.1", $this->path),
0 ignored issues
show
Coding Style Comprehensibility introduced by
The string literal POST %s HTTP/1.1 does not require double quotes, as per coding-style, please use single quotes.

PHP provides two ways to mark string literals. Either with single quotes 'literal' or with double quotes "literal". The difference between these is that string literals in double quotes may contain variables with are evaluated at run-time as well as escape sequences.

String literals in single quotes on the other hand are evaluated very literally and the only two characters that needs escaping in the literal are the single quote itself (\') and the backslash (\\). Every other character is displayed as is.

Double quoted string literals may contain other variables or more complex escape sequences.

<?php

$singleQuoted = 'Value';
$doubleQuoted = "\tSingle is $singleQuoted";

print $doubleQuoted;

will print an indented: Single is Value

If your string literal does not contain variables or escape sequences, it should be defined using single quotes to make that fact clear.

For more information on PHP string literals and available escape sequences see the PHP core documentation.

Loading history...
174 6
            sprintf("Host: %s:%d", $this->host, $this->port),
0 ignored issues
show
Coding Style Comprehensibility introduced by
The string literal Host: %s:%d does not require double quotes, as per coding-style, please use single quotes.

PHP provides two ways to mark string literals. Either with single quotes 'literal' or with double quotes "literal". The difference between these is that string literals in double quotes may contain variables with are evaluated at run-time as well as escape sequences.

String literals in single quotes on the other hand are evaluated very literally and the only two characters that needs escaping in the literal are the single quote itself (\') and the backslash (\\). Every other character is displayed as is.

Double quoted string literals may contain other variables or more complex escape sequences.

<?php

$singleQuoted = 'Value';
$doubleQuoted = "\tSingle is $singleQuoted";

print $doubleQuoted;

will print an indented: Single is Value

If your string literal does not contain variables or escape sequences, it should be defined using single quotes to make that fact clear.

For more information on PHP string literals and available escape sequences see the PHP core documentation.

Loading history...
175 6
            sprintf("Content-Length: %d", strlen($rawMessage)),
0 ignored issues
show
Coding Style Comprehensibility introduced by
The string literal Content-Length: %d does not require double quotes, as per coding-style, please use single quotes.

PHP provides two ways to mark string literals. Either with single quotes 'literal' or with double quotes "literal". The difference between these is that string literals in double quotes may contain variables with are evaluated at run-time as well as escape sequences.

String literals in single quotes on the other hand are evaluated very literally and the only two characters that needs escaping in the literal are the single quote itself (\') and the backslash (\\). Every other character is displayed as is.

Double quoted string literals may contain other variables or more complex escape sequences.

<?php

$singleQuoted = 'Value';
$doubleQuoted = "\tSingle is $singleQuoted";

print $doubleQuoted;

will print an indented: Single is Value

If your string literal does not contain variables or escape sequences, it should be defined using single quotes to make that fact clear.

For more information on PHP string literals and available escape sequences see the PHP core documentation.

Loading history...
176 6
            "Content-Type: application/json",
0 ignored issues
show
Coding Style Comprehensibility introduced by
The string literal Content-Type: application/json does not require double quotes, as per coding-style, please use single quotes.

PHP provides two ways to mark string literals. Either with single quotes 'literal' or with double quotes "literal". The difference between these is that string literals in double quotes may contain variables with are evaluated at run-time as well as escape sequences.

String literals in single quotes on the other hand are evaluated very literally and the only two characters that needs escaping in the literal are the single quote itself (\') and the backslash (\\). Every other character is displayed as is.

Double quoted string literals may contain other variables or more complex escape sequences.

<?php

$singleQuoted = 'Value';
$doubleQuoted = "\tSingle is $singleQuoted";

print $doubleQuoted;

will print an indented: Single is Value

If your string literal does not contain variables or escape sequences, it should be defined using single quotes to make that fact clear.

For more information on PHP string literals and available escape sequences see the PHP core documentation.

Loading history...
177 6
            "Connection: Keep-Alive",
0 ignored issues
show
Coding Style Comprehensibility introduced by
The string literal Connection: Keep-Alive does not require double quotes, as per coding-style, please use single quotes.

PHP provides two ways to mark string literals. Either with single quotes 'literal' or with double quotes "literal". The difference between these is that string literals in double quotes may contain variables with are evaluated at run-time as well as escape sequences.

String literals in single quotes on the other hand are evaluated very literally and the only two characters that needs escaping in the literal are the single quote itself (\') and the backslash (\\). Every other character is displayed as is.

Double quoted string literals may contain other variables or more complex escape sequences.

<?php

$singleQuoted = 'Value';
$doubleQuoted = "\tSingle is $singleQuoted";

print $doubleQuoted;

will print an indented: Single is Value

If your string literal does not contain variables or escape sequences, it should be defined using single quotes to make that fact clear.

For more information on PHP string literals and available escape sequences see the PHP core documentation.

Loading history...
178
            "Accept: */*"
0 ignored issues
show
Coding Style Comprehensibility introduced by
The string literal Accept: */* does not require double quotes, as per coding-style, please use single quotes.

PHP provides two ways to mark string literals. Either with single quotes 'literal' or with double quotes "literal". The difference between these is that string literals in double quotes may contain variables with are evaluated at run-time as well as escape sequences.

String literals in single quotes on the other hand are evaluated very literally and the only two characters that needs escaping in the literal are the single quote itself (\') and the backslash (\\). Every other character is displayed as is.

Double quoted string literals may contain other variables or more complex escape sequences.

<?php

$singleQuoted = 'Value';
$doubleQuoted = "\tSingle is $singleQuoted";

print $doubleQuoted;

will print an indented: Single is Value

If your string literal does not contain variables or escape sequences, it should be defined using single quotes to make that fact clear.

For more information on PHP string literals and available escape sequences see the PHP core documentation.

Loading history...
179 6
        );
180
181 6
        if (null !== $this->authentication) {
182 1
            $request[] = "Authorization: Basic " . base64_encode($this->authentication);
0 ignored issues
show
Coding Style Comprehensibility introduced by
The string literal Authorization: Basic does not require double quotes, as per coding-style, please use single quotes.

PHP provides two ways to mark string literals. Either with single quotes 'literal' or with double quotes "literal". The difference between these is that string literals in double quotes may contain variables with are evaluated at run-time as well as escape sequences.

String literals in single quotes on the other hand are evaluated very literally and the only two characters that needs escaping in the literal are the single quote itself (\') and the backslash (\\). Every other character is displayed as is.

Double quoted string literals may contain other variables or more complex escape sequences.

<?php

$singleQuoted = 'Value';
$doubleQuoted = "\tSingle is $singleQuoted";

print $doubleQuoted;

will print an indented: Single is Value

If your string literal does not contain variables or escape sequences, it should be defined using single quotes to make that fact clear.

For more information on PHP string literals and available escape sequences see the PHP core documentation.

Loading history...
183 1
        }
184
185 6
        if ($messageEncoder instanceof CompressedJsonEncoder) {
186 1
            $request[] = "Content-Encoding: gzip";
0 ignored issues
show
Coding Style Comprehensibility introduced by
The string literal Content-Encoding: gzip does not require double quotes, as per coding-style, please use single quotes.

PHP provides two ways to mark string literals. Either with single quotes 'literal' or with double quotes "literal". The difference between these is that string literals in double quotes may contain variables with are evaluated at run-time as well as escape sequences.

String literals in single quotes on the other hand are evaluated very literally and the only two characters that needs escaping in the literal are the single quote itself (\') and the backslash (\\). Every other character is displayed as is.

Double quoted string literals may contain other variables or more complex escape sequences.

<?php

$singleQuoted = 'Value';
$doubleQuoted = "\tSingle is $singleQuoted";

print $doubleQuoted;

will print an indented: Single is Value

If your string literal does not contain variables or escape sequences, it should be defined using single quotes to make that fact clear.

For more information on PHP string literals and available escape sequences see the PHP core documentation.

Loading history...
187 1
        }
188
189 6
        $request[] = ""; // blank line to separate headers from body
0 ignored issues
show
Coding Style Comprehensibility introduced by
The string literal does not require double quotes, as per coding-style, please use single quotes.

PHP provides two ways to mark string literals. Either with single quotes 'literal' or with double quotes "literal". The difference between these is that string literals in double quotes may contain variables with are evaluated at run-time as well as escape sequences.

String literals in single quotes on the other hand are evaluated very literally and the only two characters that needs escaping in the literal are the single quote itself (\') and the backslash (\\). Every other character is displayed as is.

Double quoted string literals may contain other variables or more complex escape sequences.

<?php

$singleQuoted = 'Value';
$doubleQuoted = "\tSingle is $singleQuoted";

print $doubleQuoted;

will print an indented: Single is Value

If your string literal does not contain variables or escape sequences, it should be defined using single quotes to make that fact clear.

For more information on PHP string literals and available escape sequences see the PHP core documentation.

Loading history...
190 6
        $request[] = $rawMessage;
191
192 6
        $request = implode($request, "\r\n");
0 ignored issues
show
Unused Code introduced by
The call to implode() has too many arguments starting with ' '. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

192
        $request = /** @scrutinizer ignore-call */ implode($request, "\r\n");

This check compares calls to functions or methods with their respective definitions. If the call has more arguments than are defined, it raises an issue.

If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress. Please note the @ignore annotation hint above.

Loading history...
193
194 6
        $byteCount = $this->socketClient->write($request);
195 6
        $headers = $this->readResponseHeaders();
0 ignored issues
show
Coding Style introduced by
Equals sign not aligned with surrounding assignments; expected 3 spaces but found 1 space

This check looks for multiple assignments in successive lines of code. It will report an issue if the operators are not in a straight line.

To visualize

$a = "a";
$ab = "ab";
$abc = "abc";

will produce issues in the first and second line, while this second example

$a   = "a";
$ab  = "ab";
$abc = "abc";

will produce no issues.

Loading history...
196
197
        // if we don't have a HTTP/1.1 connection, or the server decided to close the connection
198
        // we should do so as well. next read/write-attempt will open a new socket in this case.
199 6
        if (strpos($headers, "HTTP/1.1") !== 0 || preg_match("!Connection:\s*Close!i", $headers)) {
0 ignored issues
show
Coding Style Comprehensibility introduced by
The string literal HTTP/1.1 does not require double quotes, as per coding-style, please use single quotes.

PHP provides two ways to mark string literals. Either with single quotes 'literal' or with double quotes "literal". The difference between these is that string literals in double quotes may contain variables with are evaluated at run-time as well as escape sequences.

String literals in single quotes on the other hand are evaluated very literally and the only two characters that needs escaping in the literal are the single quote itself (\') and the backslash (\\). Every other character is displayed as is.

Double quoted string literals may contain other variables or more complex escape sequences.

<?php

$singleQuoted = 'Value';
$doubleQuoted = "\tSingle is $singleQuoted";

print $doubleQuoted;

will print an indented: Single is Value

If your string literal does not contain variables or escape sequences, it should be defined using single quotes to make that fact clear.

For more information on PHP string literals and available escape sequences see the PHP core documentation.

Loading history...
Coding Style Comprehensibility introduced by
The string literal !Connection:\s*Close!i does not require double quotes, as per coding-style, please use single quotes.

PHP provides two ways to mark string literals. Either with single quotes 'literal' or with double quotes "literal". The difference between these is that string literals in double quotes may contain variables with are evaluated at run-time as well as escape sequences.

String literals in single quotes on the other hand are evaluated very literally and the only two characters that needs escaping in the literal are the single quote itself (\') and the backslash (\\). Every other character is displayed as is.

Double quoted string literals may contain other variables or more complex escape sequences.

<?php

$singleQuoted = 'Value';
$doubleQuoted = "\tSingle is $singleQuoted";

print $doubleQuoted;

will print an indented: Single is Value

If your string literal does not contain variables or escape sequences, it should be defined using single quotes to make that fact clear.

For more information on PHP string literals and available escape sequences see the PHP core documentation.

Loading history...
200 3
            $this->socketClient->close();
201 3
        }
202
203 6
        if (!preg_match("!^HTTP/1.\d 202 Accepted!i", $headers)) {
0 ignored issues
show
Coding Style Comprehensibility introduced by
The string literal !^HTTP/1.\d 202 Accepted!i does not require double quotes, as per coding-style, please use single quotes.

PHP provides two ways to mark string literals. Either with single quotes 'literal' or with double quotes "literal". The difference between these is that string literals in double quotes may contain variables with are evaluated at run-time as well as escape sequences.

String literals in single quotes on the other hand are evaluated very literally and the only two characters that needs escaping in the literal are the single quote itself (\') and the backslash (\\). Every other character is displayed as is.

Double quoted string literals may contain other variables or more complex escape sequences.

<?php

$singleQuoted = 'Value';
$doubleQuoted = "\tSingle is $singleQuoted";

print $doubleQuoted;

will print an indented: Single is Value

If your string literal does not contain variables or escape sequences, it should be defined using single quotes to make that fact clear.

For more information on PHP string literals and available escape sequences see the PHP core documentation.

Loading history...
204 1
            throw new RuntimeException(
205 1
                sprintf(
206 1
                    "Graylog-Server didn't answer properly, expected 'HTTP/1.x 202 Accepted', response is '%s'",
0 ignored issues
show
Coding Style introduced by
This line exceeds maximum limit of 100 characters; contains 112 characters

Overly long lines are hard to read on any screen. Most code styles therefor impose a maximum limit on the number of characters in a line.

Loading history...
207 1
                    trim($headers)
208 1
                )
209 1
            );
210
        }
211
212 5
        return $byteCount;
213
    }
214
215
    /**
216
     * @return string
217
     */
218 6
    private function readResponseHeaders()
219
    {
220 6
        $chunkSize = 1024; // number of bytes to read at once
221 6
        $delimiter = "\r\n\r\n"; // delimiter between headers and rsponse
222 6
        $response = "";
0 ignored issues
show
Coding Style introduced by
Equals sign not aligned with surrounding assignments; expected 2 spaces but found 1 space

This check looks for multiple assignments in successive lines of code. It will report an issue if the operators are not in a straight line.

To visualize

$a = "a";
$ab = "ab";
$abc = "abc";

will produce issues in the first and second line, while this second example

$a   = "a";
$ab  = "ab";
$abc = "abc";

will produce no issues.

Loading history...
Coding Style Comprehensibility introduced by
The string literal does not require double quotes, as per coding-style, please use single quotes.

PHP provides two ways to mark string literals. Either with single quotes 'literal' or with double quotes "literal". The difference between these is that string literals in double quotes may contain variables with are evaluated at run-time as well as escape sequences.

String literals in single quotes on the other hand are evaluated very literally and the only two characters that needs escaping in the literal are the single quote itself (\') and the backslash (\\). Every other character is displayed as is.

Double quoted string literals may contain other variables or more complex escape sequences.

<?php

$singleQuoted = 'Value';
$doubleQuoted = "\tSingle is $singleQuoted";

print $doubleQuoted;

will print an indented: Single is Value

If your string literal does not contain variables or escape sequences, it should be defined using single quotes to make that fact clear.

For more information on PHP string literals and available escape sequences see the PHP core documentation.

Loading history...
223
224
        do {
225 6
            $chunk = $this->socketClient->read($chunkSize);
0 ignored issues
show
Coding Style introduced by
Equals sign not aligned with surrounding assignments; expected 5 spaces but found 1 space

This check looks for multiple assignments in successive lines of code. It will report an issue if the operators are not in a straight line.

To visualize

$a = "a";
$ab = "ab";
$abc = "abc";

will produce issues in the first and second line, while this second example

$a   = "a";
$ab  = "ab";
$abc = "abc";

will produce no issues.

Loading history...
226 6
            $response .= $chunk;
227 6
        } while (false === strpos($chunk, $delimiter) && strlen($chunk) > 0);
228
229 6
        $elements = explode($delimiter, $response, 2);
230
231 6
        return $elements[0];
232
    }
233
234
    /**
235
     * @return string
236
     */
237 15
    private function getScheme()
238
    {
239 15
        return null === $this->sslOptions ? 'tcp' : 'ssl';
240
    }
241
242
    /**
243
     * @return array
244
     */
245 15
    private function getContext()
246
    {
247 15
        if (null === $this->sslOptions) {
248 15
            return array();
249
        }
250
251 3
        return $this->sslOptions->toStreamContext($this->host);
252
    }
253
254
    /**
255
     * Sets the connect-timeout
256
     *
257
     * @param int $timeout
258
     */
259 1
    public function setConnectTimeout($timeout)
260
    {
261 1
        $this->socketClient->setConnectTimeout($timeout);
262 1
    }
263
264
    /**
265
     * Returns the connect-timeout
266
     *
267
     * @return int
268
     */
269 1
    public function getConnectTimeout()
270
    {
271 1
        return $this->socketClient->getConnectTimeout();
272
    }
273
}
0 ignored issues
show
Coding Style introduced by
As per coding style, files should not end with a newline character.

This check marks files that end in a newline character, i.e. an empy line.

Loading history...
274