Working on the API

This commit is contained in:
Hillel Coren 2015-11-08 11:43:32 +02:00
parent bef7454b73
commit ba90eb45ad
3 changed files with 26 additions and 19 deletions

View File

@ -10,8 +10,6 @@ use App\Models\AccountToken;
use App\Ninja\Repositories\AccountRepository; use App\Ninja\Repositories\AccountRepository;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use League\Fractal; use League\Fractal;
use League\Fractal\Resource\Item;
use League\Fractal\Resource\Collection;
use League\Fractal\Manager; use League\Fractal\Manager;
use App\Ninja\Serializers\ArraySerializer; use App\Ninja\Serializers\ArraySerializer;
use App\Ninja\Transformers\AccountTransformer; use App\Ninja\Transformers\AccountTransformer;
@ -50,20 +48,22 @@ class AccountApiController extends BaseAPIController
$this->accountRepo->createTokens(Auth::user(), $request->token_name); $this->accountRepo->createTokens(Auth::user(), $request->token_name);
$users = $this->accountRepo->findUsers(Auth::user(), 'account.account_tokens'); $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()
public function show($accountKey)
{ {
$account = $this->accountRepo->findByKey($accountKey); $account = Auth::user()->account;
$response = $this->createItem($account, new AccountTransformer);
$resource = new Item($account, new AccountTransformer); return $this->response($response);
return $this->returnData($resource);
} }
*/
} }

View File

@ -4,6 +4,8 @@ use Utils;
use Response; use Response;
use League\Fractal; use League\Fractal;
use League\Fractal\Manager; use League\Fractal\Manager;
use League\Fractal\Resource\Item;
use League\Fractal\Resource\Collection;
use App\Ninja\Serializers\ArraySerializer; use App\Ninja\Serializers\ArraySerializer;
class BaseAPIController extends Controller class BaseAPIController extends Controller
@ -16,14 +18,20 @@ class BaseAPIController extends Controller
$this->manager->setSerializer(new ArraySerializer()); $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); $response = json_encode($response, JSON_PRETTY_PRINT);
$headers = Utils::getApiHeaders(); $headers = Utils::getApiHeaders();

View File

@ -192,8 +192,7 @@ Route::group(['middleware' => 'api', 'prefix' => 'api/v1'], function()
{ {
Route::resource('ping', 'ClientApiController@ping'); Route::resource('ping', 'ClientApiController@ping');
Route::post('login', 'AccountApiController@login'); Route::post('login', 'AccountApiController@login');
Route::get('accounts', 'AccountApiController@index'); Route::get('accounts', 'AccountApiController@show');
Route::get('accounts/{account_key}', 'AccountApiController@show');
Route::resource('clients', 'ClientApiController'); Route::resource('clients', 'ClientApiController');
Route::get('quotes/{client_id?}', 'QuoteApiController@index'); Route::get('quotes/{client_id?}', 'QuoteApiController@index');
Route::resource('quotes', 'QuoteApiController'); Route::resource('quotes', 'QuoteApiController');