This repository was archived by the owner on May 10, 2018. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 21
Expand file tree
/
Copy pathHttpResponse.php
More file actions
97 lines (87 loc) · 3.1 KB
/
Copy pathHttpResponse.php
File metadata and controls
97 lines (87 loc) · 3.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<?php
/**
* Copyright 2013 Splunk, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"): you may
* not use this file except in compliance with the License. You may obtain
* a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*/
/**
* Represents a response received from an HTTP request.
*
* When reading a potentially large response, the 'bodyStream'
* property should be used used in preference to the 'body' property,
* since it will only keep the current part of the body loaded in memory.
*
* @package Splunk
* @internal
*
* @property-read integer $status HTTP status code (ex: 200).
* @property-read string $reason HTTP reason string (ex: 'OK').
* @property-read array $headers Dictionary of headers.
* (ex: array('Content-Length' => '0')).
* @property-read string $body Content of the response,
* as a single byte string.
* @property-read resource $bodyStream
* Content of the response, as a stream
* (of the type returned by fopen()).
*/
class Splunk_HttpResponse
{
private $state;
private $body; // lazy
private $bodyStream; // lazy
/* @internal */
public function __construct($state)
{
$this->state = $state;
$this->body = NULL;
$this->bodyStream = NULL;
}
// === Accessors ===
/** @internal */
public function __get($key)
{
if ($key === 'body')
return $this->getBody();
else if ($key === 'bodyStream')
return $this->getBodyStream();
else
return $this->state[$key];
}
private function getBody()
{
if (array_key_exists('body', $this->state))
return $this->state['body'];
if ($this->body === NULL)
{
if (!array_key_exists('bodyStream', $this->state))
throw new Splunk_UnsupportedOperationException(
'Response object does not contain body stream.');
$this->body = Splunk_Util::stream_get_contents(
$this->state['bodyStream']);
}
return $this->body;
}
private function getBodyStream()
{
if (array_key_exists('bodyStream', $this->state))
return $this->state['bodyStream'];
if ($this->bodyStream === NULL)
{
if (!array_key_exists('body', $this->state))
throw new Splunk_UnsupportedOperationException(
'Response object does not contain body.');
$this->bodyStream = Splunk_StringStream::create($this->state['body']);
}
return $this->bodyStream;
}
}