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\HTTPClient;
20:
21: /**
22: * cURL session manager
23: *
24: * @package LINE\LINEBot\HTTPClient
25: */
26: class Curl
27: {
28: /** @var resource */
29: private $ch;
30:
31: /**
32: * Initialize a cURL session
33: *
34: * @param string $url
35: */
36: public function __construct($url)
37: {
38: $this->ch = curl_init($url);
39: }
40:
41: /**
42: * Set multiple options for a cURL transfer
43: *
44: * @param array $options Returns TRUE if all options were successfully set. If an option could not be
45: * successfully set, FALSE is immediately returned, ignoring any future options in the options array.
46: * @return bool
47: */
48: public function setoptArray(array $options)
49: {
50: return curl_setopt_array($this->ch, $options);
51: }
52:
53: /**
54: * Perform a cURL session
55: *
56: * @return bool Returns TRUE on success or FALSE on failure. However, if the CURLOPT_RETURNTRANSFER
57: * option is set, it will return the result on success, FALSE on failure.
58: */
59: public function exec()
60: {
61: return curl_exec($this->ch);
62: }
63:
64: /**
65: * Gets information about the last transfer.
66: *
67: * @return array
68: */
69: public function getinfo()
70: {
71: return curl_getinfo($this->ch);
72: }
73:
74: /**
75: * @return int Returns the error number or 0 (zero) if no error occurred.
76: */
77: public function errno()
78: {
79: return curl_errno($this->ch);
80: }
81:
82: /**
83: * @return string Returns the error message or '' (the empty string) if no error occurred.
84: */
85: public function error()
86: {
87: return curl_error($this->ch);
88: }
89:
90: /**
91: * Closes a cURL session and frees all resources. The cURL handle, ch, is also deleted.
92: */
93: public function __destruct()
94: {
95: curl_close($this->ch);
96: }
97: }
98: