1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
<?php namespace Illuminate\Support\Facades;
use Illuminate\Support\Str; use Illuminate\Http\JsonResponse; use Illuminate\Http\Response as IlluminateResponse; use Illuminate\Support\Contracts\ArrayableInterface; use Symfony\Component\HttpFoundation\StreamedResponse; use Symfony\Component\HttpFoundation\BinaryFileResponse;
class Response {
/** * An array of registered Response macros. * * @var array */ protected static $macros = array();
/** * Return a new response from the application. * * @param string $content * @param int $status * @param array $headers * @return \Illuminate\Http\Response */ public static function make($content = '', $status = 200, array $headers = array()) { return new IlluminateResponse($content, $status, $headers); }
/** * Return a new view response from the application. * * @param string $view * @param array $data * @param int $status * @param array $headers * @return \Illuminate\Http\Response */ public static function view($view, $data = array(), $status = 200, array $headers = array()) { $app = Facade::getFacadeApplication();
return static::make($app['view']->make($view, $data), $status, $headers); }
/** * Return a new JSON response from the application. * * @param string|array $data * @param int $status * @param array $headers * @param int $options * @return \Illuminate\Http\JsonResponse */ public static function json($data = array(), $status = 200, array $headers = array(), $options = 0) { if ($data instanceof ArrayableInterface) { $data = $data->toArray(); }
return new JsonResponse($data, $status, $headers, $options); }
/** * Return a new streamed response from the application. * * @param \Closure $callback * @param int $status * @param array $headers * @return \Symfony\Component\HttpFoundation\StreamedResponse */ public static function stream($callback, $status = 200, array $headers = array()) { return new StreamedResponse($callback, $status, $headers); }
/** * Create a new file download response. * * @param \SplFileInfo|string $file * @param string $name * @param array $headers * @param null|string $disposition * @return \Symfony\Component\HttpFoundation\BinaryFileResponse */ public static function download($file, $name = null, array $headers = array(), $disposition = 'attachment') { $response = new BinaryFileResponse($file, 200, $headers, true, $disposition);
if ( ! is_null($name)) { return $response->setContentDisposition($disposition, $name, Str::ascii($name)); }
return $response; }
/** * Register a macro with the Response class. * * @param string $name * @param callable $callback * @return void */ public static function macro($name, $callback) { static::$macros[$name] = $callback; }
/** * Handle dynamic calls into Response macros. * * @param string $method * @param array $parameters * @return mixed * * @throws \BadMethodCallException */ public static function __callStatic($method, $parameters) { if (isset(static::$macros[$method])) { return call_user_func_array(static::$macros[$method], $parameters); }
throw new \BadMethodCallException("Call to undefined method $method"); }
}
|