Вход Регистрация
Файл: vendor/laravel/framework/src/Illuminate/Http/Client/Request.php
Строк: 202
<?php

namespace IlluminateHttpClient;

use 
ArrayAccess;
use 
IlluminateSupportArr;
use 
IlluminateSupportTraitsMacroable;
use 
LogicException;

class 
Request implements ArrayAccess
{
    use 
Macroable;

    
/**
     * The underlying PSR request.
     *
     * @var PsrHttpMessageRequestInterface
     */
    
protected $request;

    
/**
     * The decoded payload for the request.
     *
     * @var array
     */
    
protected $data;

    
/**
     * Create a new request instance.
     *
     * @param  PsrHttpMessageRequestInterface  $request
     * @return void
     */
    
public function __construct($request)
    {
        
$this->request $request;
    }

    
/**
     * Get the request method.
     *
     * @return string
     */
    
public function method()
    {
        return 
$this->request->getMethod();
    }

    
/**
     * Get the URL of the request.
     *
     * @return string
     */
    
public function url()
    {
        return (string) 
$this->request->getUri();
    }

    
/**
     * Determine if the request has a given header.
     *
     * @param  string  $key
     * @param  mixed  $value
     * @return bool
     */
    
public function hasHeader($key$value null)
    {
        if (
is_null($value)) {
            return ! empty(
$this->request->getHeaders()[$key]);
        }

        
$headers $this->headers();

        if (! 
Arr::has($headers$key)) {
            return 
false;
        }

        
$value is_array($value) ? $value : [$value];

        return empty(
array_diff($value$headers[$key]));
    }

    
/**
     * Determine if the request has the given headers.
     *
     * @param  array|string  $headers
     * @return bool
     */
    
public function hasHeaders($headers)
    {
        if (
is_string($headers)) {
            
$headers = [$headers => null];
        }

        foreach (
$headers as $key => $value) {
            if (! 
$this->hasHeader($key$value)) {
                return 
false;
            }
        }

        return 
true;
    }

    
/**
     * Get the values for the header with the given name.
     *
     * @param  string  $key
     * @return array
     */
    
public function header($key)
    {
        return 
Arr::get($this->headers(), $key, []);
    }

    
/**
     * Get the request headers.
     *
     * @return array
     */
    
public function headers()
    {
        return 
$this->request->getHeaders();
    }

    
/**
     * Get the body of the request.
     *
     * @return string
     */
    
public function body()
    {
        return (string) 
$this->request->getBody();
    }

    
/**
     * Determine if the request contains the given file.
     *
     * @param  string  $name
     * @param  string|null  $value
     * @param  string|null  $filename
     * @return bool
     */
    
public function hasFile($name$value null$filename null)
    {
        if (! 
$this->isMultipart()) {
            return 
false;
        }

        return 
collect($this->data)->reject(function ($file) use ($name$value$filename) {
            return 
$file['name'] != $name ||
                (
$value && $file['contents'] != $value) ||
                (
$filename && $file['filename'] != $filename);
        })->
count() > 0;
    }

    
/**
     * Get the request's data (form parameters or JSON).
     *
     * @return array
     */
    
public function data()
    {
        if (
$this->isForm()) {
            return 
$this->parameters();
        } elseif (
$this->isJson()) {
            return 
$this->json();
        }

        return 
$this->data ?? [];
    }

    
/**
     * Get the request's form parameters.
     *
     * @return array
     */
    
protected function parameters()
    {
        if (! 
$this->data) {
            
parse_str($this->body(), $parameters);

            
$this->data $parameters;
        }

        return 
$this->data;
    }

    
/**
     * Get the JSON decoded body of the request.
     *
     * @return array
     */
    
protected function json()
    {
        if (! 
$this->data) {
            
$this->data json_decode($this->body(), true) ?? [];
        }

        return 
$this->data;
    }

    
/**
     * Determine if the request is simple form data.
     *
     * @return bool
     */
    
public function isForm()
    {
        return 
$this->hasHeader('Content-Type''application/x-www-form-urlencoded');
    }

    
/**
     * Determine if the request is JSON.
     *
     * @return bool
     */
    
public function isJson()
    {
        return 
$this->hasHeader('Content-Type') &&
               
str_contains($this->header('Content-Type')[0], 'json');
    }

    
/**
     * Determine if the request is multipart.
     *
     * @return bool
     */
    
public function isMultipart()
    {
        return 
$this->hasHeader('Content-Type') &&
               
str_contains($this->header('Content-Type')[0], 'multipart');
    }

    
/**
     * Set the decoded data on the request.
     *
     * @param  array  $data
     * @return $this
     */
    
public function withData(array $data)
    {
        
$this->data $data;

        return 
$this;
    }

    
/**
     * Get the underlying PSR compliant request instance.
     *
     * @return PsrHttpMessageRequestInterface
     */
    
public function toPsrRequest()
    {
        return 
$this->request;
    }

    
/**
     * Determine if the given offset exists.
     *
     * @param  string  $offset
     * @return bool
     */
    
public function offsetExists($offset): bool
    
{
        return isset(
$this->data()[$offset]);
    }

    
/**
     * Get the value for a given offset.
     *
     * @param  string  $offset
     * @return mixed
     */
    
public function offsetGet($offset): mixed
    
{
        return 
$this->data()[$offset];
    }

    
/**
     * Set the value at the given offset.
     *
     * @param  string  $offset
     * @param  mixed  $value
     * @return void
     *
     * @throws LogicException
     */
    
public function offsetSet($offset$value): void
    
{
        throw new 
LogicException('Request data may not be mutated using array access.');
    }

    
/**
     * Unset the value at the given offset.
     *
     * @param  string  $offset
     * @return void
     *
     * @throws LogicException
     */
    
public function offsetUnset($offset): void
    
{
        throw new 
LogicException('Request data may not be mutated using array access.');
    }
}
Онлайн: 0
Реклама