krz/vox-populi

A Tumblr web client.

clone: git clone https://gitbay.org/krz/vox-populi.git

main: vendor/psr/http-message/src/RequestInterface.php · raw

  1<?php
  2
  3namespace Psr\Http\Message;
  4
  5/**
  6 * Representation of an outgoing, client-side request.
  7 *
  8 * Per the HTTP specification, this interface includes properties for
  9 * each of the following:
 10 *
 11 * - Protocol version
 12 * - HTTP method
 13 * - URI
 14 * - Headers
 15 * - Message body
 16 *
 17 * During construction, implementations MUST attempt to set the Host header from
 18 * a provided URI if no Host header is provided.
 19 *
 20 * Requests are considered immutable; all methods that might change state MUST
 21 * be implemented such that they retain the internal state of the current
 22 * message and return an instance that contains the changed state.
 23 */
 24interface RequestInterface extends MessageInterface
 25{
 26    /**
 27     * Retrieves the message's request target.
 28     *
 29     * Retrieves the message's request-target either as it will appear (for
 30     * clients), as it appeared at request (for servers), or as it was
 31     * specified for the instance (see withRequestTarget()).
 32     *
 33     * In most cases, this will be the origin-form of the composed URI,
 34     * unless a value was provided to the concrete implementation (see
 35     * withRequestTarget() below).
 36     *
 37     * If no URI is available, and no request-target has been specifically
 38     * provided, this method MUST return the string "/".
 39     *
 40     * @return string
 41     */
 42    public function getRequestTarget();
 43
 44    /**
 45     * Return an instance with the specific request-target.
 46     *
 47     * If the request needs a non-origin-form request-target — e.g., for
 48     * specifying an absolute-form, authority-form, or asterisk-form —
 49     * this method may be used to create an instance with the specified
 50     * request-target, verbatim.
 51     *
 52     * This method MUST be implemented in such a way as to retain the
 53     * immutability of the message, and MUST return an instance that has the
 54     * changed request target.
 55     *
 56     * @link http://tools.ietf.org/html/rfc7230#section-5.3 (for the various
 57     *     request-target forms allowed in request messages)
 58     * @param mixed $requestTarget
 59     * @return static
 60     */
 61    public function withRequestTarget($requestTarget);
 62
 63    /**
 64     * Retrieves the HTTP method of the request.
 65     *
 66     * @return string Returns the request method.
 67     */
 68    public function getMethod();
 69
 70    /**
 71     * Return an instance with the provided HTTP method.
 72     *
 73     * While HTTP method names are typically all uppercase characters, HTTP
 74     * method names are case-sensitive and thus implementations SHOULD NOT
 75     * modify the given string.
 76     *
 77     * This method MUST be implemented in such a way as to retain the
 78     * immutability of the message, and MUST return an instance that has the
 79     * changed request method.
 80     *
 81     * @param string $method Case-sensitive method.
 82     * @return static
 83     * @throws \InvalidArgumentException for invalid HTTP methods.
 84     */
 85    public function withMethod($method);
 86
 87    /**
 88     * Retrieves the URI instance.
 89     *
 90     * This method MUST return a UriInterface instance.
 91     *
 92     * @link http://tools.ietf.org/html/rfc3986#section-4.3
 93     * @return UriInterface Returns a UriInterface instance
 94     *     representing the URI of the request.
 95     */
 96    public function getUri();
 97
 98    /**
 99     * Returns an instance with the provided URI.
100     *
101     * This method MUST update the Host header of the returned request by
102     * default if the URI contains a host component. If the URI does not
103     * contain a host component, any pre-existing Host header MUST be carried
104     * over to the returned request.
105     *
106     * You can opt-in to preserving the original state of the Host header by
107     * setting `$preserveHost` to `true`. When `$preserveHost` is set to
108     * `true`, this method interacts with the Host header in the following ways:
109     *
110     * - If the Host header is missing or empty, and the new URI contains
111     *   a host component, this method MUST update the Host header in the returned
112     *   request.
113     * - If the Host header is missing or empty, and the new URI does not contain a
114     *   host component, this method MUST NOT update the Host header in the returned
115     *   request.
116     * - If a Host header is present and non-empty, this method MUST NOT update
117     *   the Host header in the returned request.
118     *
119     * This method MUST be implemented in such a way as to retain the
120     * immutability of the message, and MUST return an instance that has the
121     * new UriInterface instance.
122     *
123     * @link http://tools.ietf.org/html/rfc3986#section-4.3
124     * @param UriInterface $uri New request URI to use.
125     * @param bool $preserveHost Preserve the original state of the Host header.
126     * @return static
127     */
128    public function withUri(UriInterface $uri, $preserveHost = false);
129}