Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
18 / 18
100.00% covered (success)
100.00%
10 / 10
CRAP
100.00% covered (success)
100.00%
1 / 1
Request
100.00% covered (success)
100.00%
18 / 18
100.00% covered (success)
100.00%
10 / 10
11
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
1 / 1
2
 getMethod
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setMethod
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getUrl
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setUrl
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getBody
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setBody
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getDefaultHeaders
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 getHeaders
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setHeaders
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3declare(strict_types=1);
4
5namespace Beyondwords\Wordpress\Core;
6
7class Request
8{
9    public const AUTH_HEADER_NAME = 'X-Api-Key';
10    public const CONTENT_TYPE_HEADER_NAME = 'Content-Type';
11    public const CONTENT_TYPE_HEADER_VALUE = 'application/json';
12
13    private $method;
14    private $url;
15    private $body;
16    private $headers;
17
18    /**
19     * @param string $method
20     * @param string $url
21     * @param mixed $body
22     */
23    public function __construct($method, $url, $body = null, $headers = null)
24    {
25        $this->setMethod($method);
26        $this->setUrl($url);
27        $this->setBody($body);
28
29        if ($headers === null) {
30            $headers = $this->getDefaultHeaders();
31        }
32
33        $this->setHeaders($headers);
34    }
35
36    /**
37     * @return mixed
38     */
39    public function getMethod()
40    {
41        return $this->method;
42    }
43
44    /**
45     * @param mixed $method
46     */
47    public function setMethod($method)
48    {
49        $this->method = strtoupper($method);
50    }
51
52    /**
53     * @return mixed
54     */
55    public function getUrl()
56    {
57        return $this->url;
58    }
59
60    /**
61     * @param mixed $url
62     */
63    public function setUrl($url)
64    {
65        $this->url = $url;
66    }
67
68    /**
69     * @return mixed
70     */
71    public function getBody()
72    {
73        return $this->body;
74    }
75
76    /**
77     * @param mixed $body
78     */
79    public function setBody($body)
80    {
81        $this->body = $body;
82    }
83
84    /**
85     * Get default headers (Authorization & Content-Type).
86     *
87     * @return mixed
88     */
89    public function getDefaultHeaders()
90    {
91        return [
92            self::AUTH_HEADER_NAME => get_option('beyondwords_api_key'),
93            self::CONTENT_TYPE_HEADER_NAME => self::CONTENT_TYPE_HEADER_VALUE,
94        ];
95    }
96
97    /**
98     * @return mixed
99     */
100    public function getHeaders()
101    {
102        return $this->headers;
103    }
104
105    /**
106     * @param mixed $headers
107     */
108    public function setHeaders($headers)
109    {
110        $this->headers = $headers;
111    }
112}