1: <?php
2:
3: /**
4: * Copyright 2016 LINE Corporation
5: *
6: * LINE Corporation licenses this file to you under the Apache License,
7: * version 2.0 (the "License"); you may not use this file except in compliance
8: * with the License. You may obtain a copy of the License at:
9: *
10: * https://www.apache.org/licenses/LICENSE-2.0
11: *
12: * Unless required by applicable law or agreed to in writing, software
13: * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14: * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
15: * License for the specific language governing permissions and limitations
16: * under the License.
17: */
18:
19: namespace LINE\LINEBot;
20:
21: /**
22: * A class represents API response.
23: *
24: * @package LINE\LINEBot
25: */
26: class Response
27: {
28: /** @var int */
29: private $httpStatus;
30: /** @var string */
31: private $body;
32: /** @var string[] */
33: private $headers;
34:
35: /**
36: * Response constructor.
37: *
38: * @param int $httpStatus HTTP status code of response.
39: * @param string $body Request body.
40: * @param string[] $headers
41: */
42: public function __construct($httpStatus, $body, $headers = [])
43: {
44: $this->httpStatus = $httpStatus;
45: $this->body = $body;
46: $this->headers = $headers;
47: }
48:
49: /**
50: * Returns HTTP status code of response.
51: *
52: * @return int HTTP status code of response.
53: */
54: public function getHTTPStatus()
55: {
56: return $this->httpStatus;
57: }
58:
59: /**
60: * Returns request is succeeded or not.
61: *
62: * @return bool Request is succeeded or not.
63: */
64: public function isSucceeded()
65: {
66: return $this->httpStatus === 200;
67: }
68:
69: /**
70: * Returns raw response body.
71: *
72: * @return string Raw request body.
73: */
74: public function getRawBody()
75: {
76: return $this->body;
77: }
78:
79: /**
80: * Returns response body as array (it means, returns JSON decoded body).
81: *
82: * @return array Request body that is JSON decoded.
83: */
84: public function getJSONDecodedBody()
85: {
86: return json_decode($this->body, true);
87: }
88:
89: /**
90: * Returns the value of the specified response header.
91: *
92: * @param string $name A String specifying the header name.
93: * @return string|null A response header string, or null if the response does not have a header of that name.
94: */
95: public function getHeader($name)
96: {
97: if (array_key_exists($name, $this->headers)) {
98: return $this->headers[$name];
99: }
100: return null;
101: }
102:
103: /**
104: * Returns all of response headers.
105: *
106: * @return string[] All of the response headers.
107: */
108: public function getHeaders()
109: {
110: return $this->headers;
111: }
112: }
113: