retrieveItem('server', $key, $default); } /** * Determine if a header is set on the request. * * @param string $key * @return bool */ public function hasHeader($key) { return ! is_null($this->header($key)); } /** * Retrieve a header from the request. * * @param string $key * @param string|array|null $default * @return string|array */ public function header($key = null, $default = null) { return $this->retrieveItem('headers', $key, $default); } /** * Get the bearer token from the request headers. * * @return string|null */ public function bearerToken() { $header = $this->header('Authorization', ''); if (Str::startsWith($header, 'Bearer ')) { return Str::substr($header, 7); } } /** * Determine if the request contains a given input item key. * * @param string|array $key * @return bool */ public function exists($key) { return $this->has($key); } /** * Determine if the request contains a given input item key. * * @param string|array $key * @return bool */ public function has($key) { $keys = is_array($key) ? $key : func_get_args(); $input = $this->all(); foreach ($keys as $value) { if (! Arr::has($input, $value)) { return false; } } return true; } /** * Determine if the request contains any of the given inputs. * * @param string|array $keys * @return bool */ public function hasAny($keys) { $keys = is_array($keys) ? $keys : func_get_args(); $input = $this->all(); foreach ($keys as $key) { if (Arr::has($input, $key)) { return true; } } return false; } /** * Determine if the request contains a non-empty value for an input item. * * @param string|array $key * @return bool */ public function filled($key) { $keys = is_array($key) ? $key : func_get_args(); foreach ($keys as $value) { if ($this->isEmptyString($value)) { return false; } } return true; } /** * Determine if the request contains a non-empty value for any of the given inputs. * * @param string|array $keys * @return bool */ public function anyFilled($keys) { $keys = is_array($keys) ? $keys : func_get_args(); foreach ($keys as $key) { if ($this->filled($key)) { return true; } } return false; } /** * Determine if the given input key is an empty string for "has". * * @param string $key * @return bool */ protected function isEmptyString($key) { $value = $this->input($key); return ! is_bool($value) && ! is_array($value) && trim((string) $value) === ''; } /** * Get the keys for all of the input and files. * * @return array */ public function keys() { return array_merge(array_keys($this->input()), $this->files->keys()); } /** * Get all of the input and files for the request. * * @param array|mixed $keys * @return array */ public function all($keys = null) { $input = array_replace_recursive($this->input(), $this->allFiles()); if (! $keys) { return $input; } $results = []; foreach (is_array($keys) ? $keys : func_get_args() as $key) { Arr::set($results, $key, Arr::get($input, $key)); } return $results; } /** * Retrieve an input item from the request. * * @param string|null $key * @param string|array|null $default * @return string|array|null */ public function input($key = null, $default = null) { return data_get( $this->getInputSource()->all() + $this->query->all(), $key, $default ); } /** * Get a subset containing the provided keys with values from the input data. * * @param array|mixed $keys * @return array */ public function only($keys) { $results = []; $input = $this->all(); $placeholder = new stdClass; foreach (is_array($keys) ? $keys : func_get_args() as $key) { $value = data_get($input, $key, $placeholder); if ($value !== $placeholder) { Arr::set($results, $key, $value); } } return $results; } /** * Get all of the input except for a specified array of items. * * @param array|mixed $keys * @return array */ public function except($keys) { $keys = is_array($keys) ? $keys : func_get_args(); $results = $this->all(); Arr::forget($results, $keys); return $results; } /** * Retrieve a query string item from the request. * * @param string $key * @param string|array|null $default * @return string|array */ public function query($key = null, $default = null) { return $this->retrieveItem('query', $key, $default); } /** * Retrieve a request payload item from the request. * * @param string $key * @param string|array|null $default * * @return string|array */ public function post($key = null, $default = null) { return $this->retrieveItem('request', $key, $default); } /** * Determine if a cookie is set on the request. * * @param string $key * @return bool */ public function hasCookie($key) { return ! is_null($this->cookie($key)); } /** * Retrieve a cookie from the request. * * @param string $key * @param string|array|null $default * @return string|array */ public function cookie($key = null, $default = null) { return $this->retrieveItem('cookies', $key, $default); } /** * Get an array of all of the files on the request. * * @return array */ public function allFiles() { $files = $this->files->all(); return $this->convertedFiles ? $this->convertedFiles : $this->convertedFiles = $this->convertUploadedFiles($files); } /** * Convert the given array of Symfony UploadedFiles to custom Laravel UploadedFiles. * * @param array $files * @return array */ protected function convertUploadedFiles(array $files) { return array_map(function ($file) { if (is_null($file) || (is_array($file) && empty(array_filter($file)))) { return $file; } return is_array($file) ? $this->convertUploadedFiles($file) : UploadedFile::createFromBase($file); }, $files); } /** * Determine if the uploaded data contains a file. * * @param string $key * @return bool */ public function hasFile($key) { if (! is_array($files = $this->file($key))) { $files = [$files]; } foreach ($files as $file) { if ($this->isValidFile($file)) { return true; } } return false; } /** * Check that the given file is a valid file instance. * * @param mixed $file * @return bool */ protected function isValidFile($file) { return $file instanceof SplFileInfo && $file->getPath() !== ''; } /** * Retrieve a file from the request. * * @param string $key * @param mixed $default * @return \Illuminate\Http\UploadedFile|array|null */ public function file($key = null, $default = null) { return data_get($this->allFiles(), $key, $default); } /** * Retrieve a parameter item from a given source. * * @param string $source * @param string $key * @param string|array|null $default * @return string|array */ protected function retrieveItem($source, $key, $default) { if (is_null($key)) { return $this->$source->all(); } return $this->$source->get($key, $default); } }