From ba90eb45ad2a2cdbd24d7fead24a685a55742f09 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Sun, 8 Nov 2015 11:43:32 +0200 Subject: [PATCH] Working on the API --- app/Http/Controllers/AccountApiController.php | 22 +++++++++---------- app/Http/Controllers/BaseAPIController.php | 20 ++++++++++++----- app/Http/routes.php | 3 +-- 3 files changed, 26 insertions(+), 19 deletions(-) diff --git a/app/Http/Controllers/AccountApiController.php b/app/Http/Controllers/AccountApiController.php index b4af0e83afe8..abe3a7c37797 100644 --- a/app/Http/Controllers/AccountApiController.php +++ b/app/Http/Controllers/AccountApiController.php @@ -10,8 +10,6 @@ use App\Models\AccountToken; use App\Ninja\Repositories\AccountRepository; use Illuminate\Http\Request; use League\Fractal; -use League\Fractal\Resource\Item; -use League\Fractal\Resource\Collection; use League\Fractal\Manager; use App\Ninja\Serializers\ArraySerializer; use App\Ninja\Transformers\AccountTransformer; @@ -50,20 +48,22 @@ class AccountApiController extends BaseAPIController $this->accountRepo->createTokens(Auth::user(), $request->token_name); $users = $this->accountRepo->findUsers(Auth::user(), 'account.account_tokens'); - $resource = new Collection($users, new UserAccountTransformer($request->token_name)); + $data = $this->createCollection($users, new UserAccountTransformer($request->token_name)); - return $this->returnData($resource, 'user_accounts'); + $response = [ + 'user_accounts' => $data, + 'default_url' => SITE_URL + ]; + + return $this->response($response); } - /* - public function show($accountKey) + public function show() { - $account = $this->accountRepo->findByKey($accountKey); + $account = Auth::user()->account; + $response = $this->createItem($account, new AccountTransformer); - $resource = new Item($account, new AccountTransformer); - - return $this->returnData($resource); + return $this->response($response); } - */ } diff --git a/app/Http/Controllers/BaseAPIController.php b/app/Http/Controllers/BaseAPIController.php index 0d11964b64ea..487393389999 100644 --- a/app/Http/Controllers/BaseAPIController.php +++ b/app/Http/Controllers/BaseAPIController.php @@ -4,6 +4,8 @@ use Utils; use Response; use League\Fractal; use League\Fractal\Manager; +use League\Fractal\Resource\Item; +use League\Fractal\Resource\Collection; use App\Ninja\Serializers\ArraySerializer; class BaseAPIController extends Controller @@ -16,14 +18,20 @@ class BaseAPIController extends Controller $this->manager->setSerializer(new ArraySerializer()); } - protected function returnData($resource, $class = false) + protected function createItem($data, $transformer) { - $response = $this->manager->createData($resource)->toArray(); + $resource = new Item($data, $transformer); + return $this->manager->createData($resource)->toArray(); + } - if ($class) { - $response = [$class => $response]; - } - + protected function createCollection($data, $transformer) + { + $resource = new Collection($data, $transformer); + return $this->manager->createData($resource)->toArray(); + } + + protected function response($response) + { $response = json_encode($response, JSON_PRETTY_PRINT); $headers = Utils::getApiHeaders(); diff --git a/app/Http/routes.php b/app/Http/routes.php index 7f0af9a9893f..04f846c2fa95 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -192,8 +192,7 @@ Route::group(['middleware' => 'api', 'prefix' => 'api/v1'], function() { Route::resource('ping', 'ClientApiController@ping'); Route::post('login', 'AccountApiController@login'); - Route::get('accounts', 'AccountApiController@index'); - Route::get('accounts/{account_key}', 'AccountApiController@show'); + Route::get('accounts', 'AccountApiController@show'); Route::resource('clients', 'ClientApiController'); Route::get('quotes/{client_id?}', 'QuoteApiController@index'); Route::resource('quotes', 'QuoteApiController');