Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
n/a
0 / 0
n/a
0 / 0
CRAP
n/a
0 / 0
1<?php
2/**
3 * Pop PHP Framework (http://www.popphp.org/)
4 *
5 * @link       https://github.com/popphp/popphp-framework
6 * @author     Nick Sagona, III <dev@nolainteractive.com>
7 * @copyright  Copyright (c) 2009-2024 NOLA Interactive, LLC. (http://www.nolainteractive.com)
8 * @license    http://www.popphp.org/license     New BSD License
9 */
10
11/**
12 * @namespace
13 */
14namespace Pop\Http;
15
16use Pop\Mime\Part\Header;
17use Pop\Mime\Part\Body;
18
19/**
20 * HTTP request/response interface
21 *
22 * @category   Pop
23 * @package    Pop\Http
24 * @author     Nick Sagona, III <dev@nolainteractive.com>
25 * @copyright  Copyright (c) 2009-2024 NOLA Interactive, LLC. (http://www.nolainteractive.com)
26 * @license    http://www.popphp.org/license     New BSD License
27 * @version    5.2.0
28 */
29interface RequestResponseInterface
30{
31
32    /**
33     * Set all headers (clear out any existing headers)
34     *
35     * @param  array $headers
36     * @return RequestResponseInterface
37     */
38    public function setHeaders(array $headers): RequestResponseInterface;
39
40    /**
41     * Set a header
42     *
43     * @param  Header|string|int $header
44     * @param  ?string           $value
45     * @return RequestResponseInterface
46     */
47    public function addHeader(Header|string|int $header, ?string $value = null): RequestResponseInterface;
48
49    /**
50     * Add all headers
51     *
52     * @param  array $headers
53     * @return RequestResponseInterface
54     */
55    public function addHeaders(array $headers): RequestResponseInterface;
56
57    /**
58     * Get a header
59     *
60     * @param  string $name
61     * @return mixed
62     */
63    public function getHeader(string $name): mixed;
64
65    /**
66     * Get a header
67     *
68     * @param  string $name
69     * @return mixed
70     */
71    public function getHeaderAsString(string $name): mixed;
72
73    /**
74     * Get header value
75     *
76     * @param  string $name
77     * @param  int    $i
78     * @return mixed
79     */
80    public function getHeaderValue(string $name, int $i = 0): mixed;
81
82    /**
83     * Get header value as string
84     *
85     * @param  string $name
86     * @param  int    $i
87     * @return string|null
88     */
89    public function getHeaderValueAsString(string $name, int $i = 0): string|null;
90
91    /**
92     * Get all headers
93     *
94     * @return array
95     */
96    public function getHeaders(): array;
97
98    /**
99     * Get all header values as associative array
100     *
101     * @return array
102     */
103    public function getHeadersAsArray(): array;
104
105    /**
106     * Get all header values formatted string
107     *
108     * @param  ?string $status
109     * @param  string  $eol
110     * @return string
111     */
112    public function getHeadersAsString(?string $status = null, string $eol = "\r\n"): string;
113
114    /**
115     * Determine if there are headers
116     *
117     * @return bool
118     */
119    public function hasHeaders(): bool;
120
121    /**
122     * Has a header
123     *
124     * @param  string $name
125     * @return bool
126     */
127    public function hasHeader(string $name): bool;
128
129    /**
130     * Remove a header
131     *
132     * @param  string $name
133     * @return RequestResponseInterface
134     */
135    public function removeHeader(string $name): RequestResponseInterface;
136
137    /**
138     * Remove all headers
139     *
140     * @return RequestResponseInterface
141     */
142    public function removeHeaders(): RequestResponseInterface;
143
144    /**
145     * Set the body
146     *
147     * @param  string|Body $body
148     * @return RequestResponseInterface
149     */
150    public function setBody(string|Body $body): RequestResponseInterface;
151
152    /**
153     * Get the body
154     *
155     * @return Body
156     */
157    public function getBody(): Body;
158
159    /**
160     * Get body content
161     *
162     * @return mixed
163     */
164    public function getBodyContent(): mixed;
165
166    /**
167     * Get body content length
168     *
169     * @param  bool $mb
170     * @return int
171     */
172    public function getBodyContentLength(bool $mb = false): int;
173
174    /**
175     * Has a body
176     *
177     * @return bool
178     */
179    public function hasBody(): bool;
180
181    /**
182     * Has body content
183     *
184     * @return bool
185     */
186    public function hasBodyContent(): bool;
187
188    /**
189     * Decode the body content
190     *
191     * @param  ?string $body
192     * @return Body
193     */
194    public function decodeBodyContent(?string $body = null): Body;
195
196    /**
197     * Remove the body
198     *
199     * @return RequestResponseInterface
200     */
201    public function removeBody(): RequestResponseInterface;
202
203}