Oxide::getOptions()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 0
1
<?php declare(strict_types=1);
2
3
/**
4
 * @author  Vadim Bova <[email protected]>
5
 * @link    https://bova.io
6
 */
7
8
namespace Folour\Oxide;
9
10
use Folour\Oxide\Components\Configurator;
11
use Folour\Oxide\Interfaces\ResponseInterface;
12
use Folour\Oxide\Components\Request\GetRequest;
13
use Folour\Oxide\Components\Request\PutRequest;
14
use Folour\Oxide\Components\Request\HeadRequest;
15
use Folour\Oxide\Components\Request\PostRequest;
16
use Folour\Oxide\Components\Request\DeleteRequest;
17
18
/**
19
 * Simple and lightweight HTTP client for PHP 7.1
20
 *
21
 * @package Folour\Oxide
22
 */
23
class Oxide extends Configurator
24
{
25
    /**
26
     * cURL default options
27
     *
28
     * @var array
29
     */
30
    private const DEFAULT_OPTIONS = [
31
        CURLOPT_FOLLOWLOCATION  => true,
32
        CURLOPT_SSL_VERIFYHOST  => false,
33
        CURLOPT_SSL_VERIFYPEER  => false,
34
        CURLOPT_RETURNTRANSFER  => true,
35
        CURLOPT_CONNECTTIMEOUT  => 2,
36
        CURLOPT_TIMEOUT         => 10,
37
        CURLOPT_HEADER          => true
38
    ];
39
40
    /**
41
     * Send GET request
42
     *
43
     * @param string    $url
44
     * @param array     $request_data
45
     * @return ResponseInterface
46
     */
47
    public function get(string $url, array $request_data = null): ResponseInterface
48
    {
49
        $request = new GetRequest($this->getOptions());
50
51
        return $request->send($url, $request_data);
52
    }
53
54
    /**
55
     * Send HEAD request
56
     *
57
     * @param string    $url
58
     * @param array     $request_data
59
     * @return ResponseInterface
60
     */
61
    public function head(string $url, array $request_data = null): ResponseInterface
62
    {
63
        $request = new HeadRequest($this->getOptions());
64
65
        return $request->send($url, $request_data);
66
    }
67
68
    /**
69
     * Send POST request
70
     *
71
     * @param string    $url
72
     * @param array     $request_data
73
     * @return ResponseInterface
74
     */
75
    public function post(string $url, array $request_data): ResponseInterface
76
    {
77
        $request = new PostRequest($this->getOptions());
78
79
        return $request->send($url, $request_data);
80
    }
81
82
    /**
83
     * Send PUT request
84
     *
85
     * @param string    $url
86
     * @param array     $request_data
87
     * @return ResponseInterface
88
     */
89
    public function put(string $url, array $request_data): ResponseInterface
90
    {
91
        $request = new PutRequest($this->getOptions());
92
93
        return $request->send($url, $request_data);
94
    }
95
96
    /**
97
     * Send DELETE request
98
     *
99
     * @param string    $url
100
     * @param array     $request_data
101
     * @return ResponseInterface
102
     */
103
    public function delete(string $url, array $request_data): ResponseInterface
104
    {
105
        $request = new DeleteRequest($this->getOptions());
106
107
        return $request->send($url, $request_data);
108
    }
109
110
    /**
111
     * @inheritdoc
112
     */
113
    protected function getOptions(): array
114
    {
115
        return array_replace(self::DEFAULT_OPTIONS, parent::getOptions());
116
    }
117
}