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 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);
}
*/
}

View File

@ -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();

View File

@ -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');