Completed
Push — master ( aa9489...67c4a6 )
by Aimeos
02:16
created

JsonadmController   A

Complexity

Total Complexity 13

Size/Duplication

Total Lines 123
Duplicated Lines 39.02 %

Coupling/Cohesion

Components 1
Dependencies 5

Importance

Changes 0
Metric Value
dl 48
loc 123
rs 10
c 0
b 0
f 0
wmc 13
lcom 1
cbo 5

7 Methods

Rating   Name   Duplication   Size   Complexity  
A putAction() 8 8 2
A optionsAction() 8 8 2
A deleteAction() 8 8 2
A getAction() 8 8 2
A patchAction() 8 8 2
A postAction() 8 8 2
A createAdmin() 0 16 1

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

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\Foundation\Auth\Access\AuthorizesRequests;
18
use Psr\Http\Message\ServerRequestInterface;
19
use Zend\Diactoros\Response;
20
21
22
/**
23
 * Aimeos controller for the JSON REST API
24
 *
25
 * @package laravel
26
 * @subpackage Controller
27
 */
28
class JsonadmController extends Controller
29
{
30
	use AuthorizesRequests;
31
32
33
	/**
34
	 * Deletes the resource object or a list of resource objects
35
	 *
36
	 * @param \Psr\Http\Message\ServerRequestInterface $request Request object
37
	 * @return \Psr\Http\Message\ResponseInterface Response object containing the generated output
38
	 */
39 View Code Duplication
	public function deleteAction( ServerRequestInterface $request )
40
	{
41
		if( config( 'shop.authorize', true ) ) {
42
			$this->authorize( 'admin', [JsonadmController::class, ['admin', 'api']] );
43
		}
44
45
		return $this->createAdmin()->delete( $request, new Response() );
46
	}
47
48
49
	/**
50
	 * Returns the requested resource object or list of resource objects
51
	 *
52
	 * @param \Psr\Http\Message\ServerRequestInterface $request Request object
53
	 * @return \Psr\Http\Message\ResponseInterface Response object containing the generated output
54
	 */
55 View Code Duplication
	public function getAction( ServerRequestInterface $request )
56
	{
57
		if( config( 'shop.authorize', true ) ) {
58
			$this->authorize( 'admin', [JsonadmController::class, ['admin', 'api', 'editor']] );
59
		}
60
61
		return $this->createAdmin()->get( $request, new Response() );
62
	}
63
64
65
	/**
66
	 * Updates a resource object or a list of resource objects
67
	 *
68
	 * @param \Psr\Http\Message\ServerRequestInterface $request Request object
69
	 * @return \Psr\Http\Message\ResponseInterface Response object containing the generated output
70
	 */
71 View Code Duplication
	public function patchAction( ServerRequestInterface $request )
72
	{
73
		if( config( 'shop.authorize', true ) ) {
74
			$this->authorize( 'admin', [JsonadmController::class, ['admin', 'api']] );
75
		}
76
77
		return $this->createAdmin()->patch( $request, new Response() );
78
	}
79
80
81
	/**
82
	 * Creates a new resource object or a list of resource objects
83
	 *
84
	 * @param \Psr\Http\Message\ServerRequestInterface $request Request object
85
	 * @return \Psr\Http\Message\ResponseInterface Response object containing the generated output
86
	 */
87 View Code Duplication
	public function postAction( ServerRequestInterface $request )
88
	{
89
		if( config( 'shop.authorize', true ) ) {
90
			$this->authorize( 'admin', [JsonadmController::class, ['admin', 'api']] );
91
		}
92
93
		return $this->createAdmin()->post( $request, new Response() );
94
	}
95
96
97
	/**
98
	 * Creates or updates a single resource object
99
	 *
100
	 * @param \Psr\Http\Message\ServerRequestInterface $request Request object
101
	 * @return \Psr\Http\Message\ResponseInterface Response object containing the generated output
102
	 */
103 View Code Duplication
	public function putAction( ServerRequestInterface $request )
104
	{
105
		if( config( 'shop.authorize', true ) ) {
106
			$this->authorize( 'admin', [JsonadmController::class, ['admin', 'api']] );
107
		}
108
109
		return $this->createAdmin()->put( $request, new Response() );
110
	}
111
112
113
	/**
114
	 * Returns the available HTTP verbs and the resource URLs
115
	 *
116
	 * @param \Psr\Http\Message\ServerRequestInterface $request Request object
117
	 * @return \Psr\Http\Message\ResponseInterface Response object containing the generated output
118
	 */
119 View Code Duplication
	public function optionsAction( ServerRequestInterface $request )
120
	{
121
		if( config( 'shop.authorize', true ) ) {
122
			$this->authorize( 'admin', [JsonadmController::class, ['admin', 'api', 'editor']] );
123
		}
124
125
		return $this->createAdmin()->options( $request, new Response() );
126
	}
127
128
129
	/**
130
	 * Returns the JsonAdm client
131
	 *
132
	 * @return \Aimeos\Admin\JsonAdm\Iface JsonAdm client
133
	 */
134
	protected function createAdmin()
135
	{
136
		$site = Route::input( 'site', Input::get( 'site', 'default' ) );
137
		$lang = Input::get( 'locale', config( 'app.locale', 'en' ) );
138
		$resource = Route::input( 'resource' );
139
140
		$aimeos = app( '\Aimeos\Shop\Base\Aimeos' )->get();
141
		$templatePaths = $aimeos->getCustomPaths( 'admin/jsonadm/templates' );
142
143
		$context = app( '\Aimeos\Shop\Base\Context' )->get( false, 'backend' );
144
		$context->setI18n( app('\Aimeos\Shop\Base\I18n')->get( array( $lang, 'en' ) ) );
145
		$context->setLocale( app('\Aimeos\Shop\Base\Locale')->getBackend( $context, $site ) );
146
		$context->setView( app( '\Aimeos\Shop\Base\View' )->create( $context, $templatePaths, $lang ) );
147
148
		return \Aimeos\Admin\JsonAdm::create( $context, $aimeos, $resource );
149
	}
150
}
151