Completed
Push — master ( 844367...ab725b )
by Aimeos
02:57
created

JsonadmController::setLocale()   A

Complexity

Conditions 2
Paths 4

Size

Total Lines 20
Code Lines 11

Duplication

Lines 20
Ratio 100 %

Importance

Changes 0
Metric Value
dl 20
loc 20
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 11
nc 4
nop 3
1
<?php
2
3
/**
4
 * @license MIT, http://opensource.org/licenses/MIT
5
 * @copyright Aimeos (aimeos.org), 2015-2016
6
 * @package laravel
7
 * @subpackage Controller
8
 */
9
10
11
namespace Aimeos\Shop\Controller;
12
13
use Illuminate\Http\Request;
14
use Illuminate\Routing\Controller;
15
use Illuminate\Support\Facades\Input;
16
use Illuminate\Support\Facades\Route;
17
use Illuminate\Support\Facades\Response;
18
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
19
20
21
/**
22
 * Aimeos controller for the JSON REST API
23
 *
24
 * @package laravel
25
 * @subpackage Controller
26
 */
27
class JsonadmController extends Controller
28
{
29
	use AuthorizesRequests;
30
31
32
	/**
33
	 * Deletes the resource object or a list of resource objects
34
	 *
35
	 * @param \Illuminate\Http\Request $request Request object
36
	 * @return \Illuminate\Http\Response Response object containing the generated output
37
	 */
38 View Code Duplication
	public function deleteAction( Request $request )
39
	{
40
		if( config( 'shop.authorize', true ) ) {
41
			$this->authorize( 'admin', [['admin', 'api']] );
42
		}
43
44
		$status = 500;
45
		$header = $request->headers->all();
46
47
		$client = $this->createClient();
48
		$result = $client->delete( (string) $request->getContent(), $header, $status );
49
50
		return $this->createResponse( $result, $status, $header );
51
	}
52
53
54
	/**
55
	 * Returns the requested resource object or list of resource objects
56
	 *
57
	 * @param \Illuminate\Http\Request $request Request object
58
	 * @return \Illuminate\Http\Response Response object containing the generated output
59
	 */
60 View Code Duplication
	public function getAction( Request $request )
61
	{
62
		if( config( 'shop.authorize', true ) ) {
63
			$this->authorize( 'admin', [['admin', 'api', 'editor']] );
64
		}
65
66
		$status = 500;
67
		$header = $request->headers->all();
68
69
		$client = $this->createClient();
70
		$result = $client->get( (string) $request->getContent(), $header, $status );
71
72
		return $this->createResponse( $result, $status, $header );
73
	}
74
75
76
	/**
77
	 * Updates a resource object or a list of resource objects
78
	 *
79
	 * @param \Illuminate\Http\Request $request Request object
80
	 * @return \Illuminate\Http\Response Response object containing the generated output
81
	 */
82 View Code Duplication
	public function patchAction( Request $request )
83
	{
84
		if( config( 'shop.authorize', true ) ) {
85
			$this->authorize( 'admin', [['admin', 'api']] );
86
		}
87
88
		$status = 500;
89
		$header = $request->headers->all();
90
91
		$client = $this->createClient();
92
		$result = $client->patch( (string) $request->getContent(), $header, $status );
93
94
		return $this->createResponse( $result, $status, $header );
95
	}
96
97
98
	/**
99
	 * Creates a new resource object or a list of resource objects
100
	 *
101
	 * @param \Illuminate\Http\Request $request Request object
102
	 * @return \Illuminate\Http\Response Response object containing the generated output
103
	 */
104 View Code Duplication
	public function postAction( Request $request )
105
	{
106
		if( config( 'shop.authorize', true ) ) {
107
			$this->authorize( 'admin', [['admin', 'api']] );
108
		}
109
110
		$status = 500;
111
		$header = $request->headers->all();
112
113
		$client = $this->createClient();
114
		$result = $client->post( (string) $request->getContent(), $header, $status );
115
116
		return $this->createResponse( $result, $status, $header );
117
	}
118
119
120
	/**
121
	 * Creates or updates a single resource object
122
	 *
123
	 * @param \Illuminate\Http\Request $request Request object
124
	 * @return \Illuminate\Http\Response Response object containing the generated output
125
	 */
126 View Code Duplication
	public function putAction( Request $request )
127
	{
128
		if( config( 'shop.authorize', true ) ) {
129
			$this->authorize( 'admin', [['admin', 'api']] );
130
		}
131
132
		$status = 500;
133
		$header = $request->headers->all();
134
135
		$client = $this->createClient();
136
		$result = $client->put( (string) $request->getContent(), $header, $status );
137
138
		return $this->createResponse( $result, $status, $header );
139
	}
140
141
142
	/**
143
	 * Returns the available HTTP verbs and the resource URLs
144
	 *
145
	 * @param \Illuminate\Http\Request $request Request object
146
	 * @return \Illuminate\Http\Response Response object containing the generated output
147
	 */
148 View Code Duplication
	public function optionsAction( Request $request )
149
	{
150
		if( config( 'shop.authorize', true ) ) {
151
			$this->authorize( 'admin', [['admin', 'api', 'editor']] );
152
		}
153
154
		$status = 500;
155
		$header = $request->headers->all();
156
157
		$client = $this->createClient();
158
		$result = $client->options( (string) $request->getContent(), $header, $status );
159
160
		return $this->createResponse( $result, $status, $header );
161
	}
162
163
164
	/**
165
	 * Returns the JsonAdm client
166
	 *
167
	 * @return \Aimeos\Admin\JsonAdm\Iface JsonAdm client
168
	 */
169 View Code Duplication
	protected function createClient()
170
	{
171
		$site = Route::input( 'site', Input::get( 'site', 'default' ) );
172
		$lang = Input::get( 'lang', config( 'app.locale', 'en' ) );
173
		$resource = Route::input( 'resource' );
174
175
		$aimeos = app( '\Aimeos\Shop\Base\Aimeos' )->get();
176
		$templatePaths = $aimeos->getCustomPaths( 'admin/jsonadm/templates' );
177
178
		$context = app( '\Aimeos\Shop\Base\Context' )->get( false, 'backend' );
179
		$context->setI18n( app('\Aimeos\Shop\Base\I18n')->get( array( $lang, 'en' ) ) );
180
		$context->setLocale( app('\Aimeos\Shop\Base\Locale')->getBackend( $context, $site ) );
181
		$context->setView( app( '\Aimeos\Shop\Base\View' )->create( $context->getConfig(), $templatePaths, $lang ) );
182
183
		return \Aimeos\Admin\JsonAdm\Factory::createClient( $context, $templatePaths, $resource );
184
	}
185
186
187
	/**
188
	 * Creates a new response object
189
	 *
190
	 * @param string $content Body of the HTTP response
191
	 * @param integer $status HTTP status
192
	 * @param array $header List of HTTP headers
193
	 * @return \Illuminate\Http\Response HTTP response object
194
	 */
195
	protected function createResponse( $content, $status, array $header )
196
	{
197
		$response = Response::make( $content, $status );
198
199
		foreach( $header as $key => $value ) {
200
			$response->header( $key, $value );
201
		}
202
203
		return $response;
204
	}
205
}
206