mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-02-25 18:45:27 -06:00
Clean up API routes
This commit is contained in:
parent
6ff84b8e90
commit
acadc89eaa
@ -49,7 +49,7 @@ class AutocompleteRequest extends FormRequest
|
|||||||
public function getParameters(): array
|
public function getParameters(): array
|
||||||
{
|
{
|
||||||
$array = [
|
$array = [
|
||||||
'date' => $this->date('date'),
|
'date' => $this->convertDateTime('date'),
|
||||||
'query' => $this->clearString((string) $this->get('query')),
|
'query' => $this->clearString((string) $this->get('query')),
|
||||||
'size' => $this->integerFromValue('size'),
|
'size' => $this->integerFromValue('size'),
|
||||||
'page' => $this->integerFromValue('page'),
|
'page' => $this->integerFromValue('page'),
|
||||||
|
@ -24,8 +24,6 @@ declare(strict_types=1);
|
|||||||
namespace FireflyIII\Api\V2\Request\Chart;
|
namespace FireflyIII\Api\V2\Request\Chart;
|
||||||
|
|
||||||
use FireflyIII\Enums\UserRoleEnum;
|
use FireflyIII\Enums\UserRoleEnum;
|
||||||
use FireflyIII\JsonApi\Rules\IsValidFilter;
|
|
||||||
use FireflyIII\Rules\IsFilterValueIn;
|
|
||||||
use FireflyIII\Support\Http\Api\ParsesQueryFilters;
|
use FireflyIII\Support\Http\Api\ParsesQueryFilters;
|
||||||
use FireflyIII\Support\Http\Api\ValidatesUserGroupTrait;
|
use FireflyIII\Support\Http\Api\ValidatesUserGroupTrait;
|
||||||
use FireflyIII\Support\Request\ChecksLogin;
|
use FireflyIII\Support\Request\ChecksLogin;
|
||||||
@ -33,8 +31,6 @@ use FireflyIII\Support\Request\ConvertsDataTypes;
|
|||||||
use Illuminate\Foundation\Http\FormRequest;
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
use Illuminate\Validation\Validator;
|
use Illuminate\Validation\Validator;
|
||||||
use LaravelJsonApi\Core\Query\QueryParameters;
|
|
||||||
use LaravelJsonApi\Validation\Rule as JsonApiRule;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class ChartRequest
|
* Class ChartRequest
|
||||||
@ -50,52 +46,29 @@ class ChartRequest extends FormRequest
|
|||||||
|
|
||||||
public function getParameters(): array
|
public function getParameters(): array
|
||||||
{
|
{
|
||||||
$queryParameters = QueryParameters::cast($this->all());
|
//$queryParameters = QueryParameters::cast($this->all());
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'start' => $this->dateOrToday($queryParameters, 'start')->startOfDay(),
|
'start' => $this->convertDateTime('start')?->startOfDay(),
|
||||||
'end' => $this->dateOrToday($queryParameters, 'end')->endOfDay(),
|
'end' => $this->convertDateTime('end')?->endOfDay(),
|
||||||
'preselected' => $this->stringFromQueryParams($queryParameters, 'preselected', 'empty'),
|
'preselected' => $this->convertString('preselected', 'empty'),
|
||||||
'period' => $this->stringFromFilterParams($queryParameters, 'period', '1M'),
|
'period' => $this->convertString('period', '1M'),
|
||||||
'accounts' => $this->arrayOfStrings($queryParameters, 'accounts'),
|
'accounts' => $this->arrayFromValue($this->get('accounts')),
|
||||||
// preselected heeft maar een paar toegestane waardes, dat moet ook goed gaan.
|
|
||||||
// 'query' => $this->arrayOfStrings($queryParameters, 'query'),
|
|
||||||
// 'size' => $this->integerFromQueryParams($queryParameters,'size', 50),
|
|
||||||
// 'account_types' => $this->getAccountTypeParameter($this->arrayOfStrings($queryParameters, 'account_types')),
|
|
||||||
];
|
];
|
||||||
// collect accounts based on this list?
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// return [
|
|
||||||
// 'accounts' => $this->getAccountList(),
|
|
||||||
// 'preselected' => $this->convertString('preselected'),
|
|
||||||
// ];
|
|
||||||
// }
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The rules that the incoming request must be matched against.
|
* The rules that the incoming request must be matched against.
|
||||||
*/
|
*/
|
||||||
public function rules(): array
|
public function rules(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'fields' => JsonApiRule::notSupported(),
|
'start' => 'required|date|after:1900-01-01|before:2099-12-31|before_or_equal:end',
|
||||||
'filter' => ['nullable', 'array',
|
'end' => 'required|date|after:1900-01-01|before:2099-12-31|after_or_equal:start',
|
||||||
new IsValidFilter(['start', 'end', 'preselected', 'accounts', 'period']),
|
'preselected' => sprintf('nullable|in:%s', implode(',', config('firefly.preselected_accounts'))),
|
||||||
new IsFilterValueIn('preselected', config('firefly.preselected_accounts')),
|
'period' => sprintf('nullable|in:%s', implode(',', config('firefly.valid_view_ranges'))),
|
||||||
],
|
'accounts.*' => 'exists:accounts,id',
|
||||||
'include' => JsonApiRule::notSupported(),
|
|
||||||
'page' => JsonApiRule::notSupported(),
|
|
||||||
'sort' => JsonApiRule::notSupported(),
|
|
||||||
// 'start' => 'required|date|after:1900-01-01|before:2099-12-31',
|
|
||||||
// 'end' => 'required|date|after_or_equal:start|before:2099-12-31|after:1900-01-01',
|
|
||||||
];
|
];
|
||||||
|
|
||||||
// return [
|
|
||||||
// 'start' => 'required|date|after:1900-01-01|before:2099-12-31',
|
|
||||||
// 'end' => 'required|date|after_or_equal:start|before:2099-12-31|after:1900-01-01',
|
|
||||||
// 'preselected' => sprintf('in:%s', implode(',', config('firefly.preselected_accounts'))),
|
|
||||||
// 'accounts.*' => 'exists:accounts,id',
|
|
||||||
// ];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function withValidator(Validator $validator): void
|
public function withValidator(Validator $validator): void
|
||||||
|
@ -36,10 +36,12 @@ trait CollectsAccountsFromFilter
|
|||||||
$collection = new Collection();
|
$collection = new Collection();
|
||||||
|
|
||||||
// always collect from the query parameter, even when it's empty.
|
// always collect from the query parameter, even when it's empty.
|
||||||
foreach ($queryParameters['accounts'] as $accountId) {
|
if (null !== $queryParameters['accounts']) {
|
||||||
$account = $this->repository->find((int) $accountId);
|
foreach ($queryParameters['accounts'] as $accountId) {
|
||||||
if (null !== $account) {
|
$account = $this->repository->find((int) $accountId);
|
||||||
$collection->push($account);
|
if (null !== $account) {
|
||||||
|
$collection->push($account);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -105,11 +105,11 @@ trait ConvertsDataTypes
|
|||||||
/**
|
/**
|
||||||
* Return string value.
|
* Return string value.
|
||||||
*/
|
*/
|
||||||
public function convertString(string $field): string
|
public function convertString(string $field, string $default = ''): string
|
||||||
{
|
{
|
||||||
$entry = $this->get($field);
|
$entry = $this->get($field);
|
||||||
if (!is_scalar($entry)) {
|
if (!is_scalar($entry)) {
|
||||||
return '';
|
return $default;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (string)$this->clearString((string)$entry);
|
return (string)$this->clearString((string)$entry);
|
||||||
|
@ -47,9 +47,9 @@ Route::group(
|
|||||||
],
|
],
|
||||||
static function (): void {
|
static function (): void {
|
||||||
Route::get('accounts', ['uses' => 'AccountController@accounts', 'as' => 'accounts']);
|
Route::get('accounts', ['uses' => 'AccountController@accounts', 'as' => 'accounts']);
|
||||||
Route::get('categories', ['uses' => 'CategoryController@categories', 'as' => 'categories']);
|
//Route::get('categories', ['uses' => 'CategoryController@categories', 'as' => 'categories']);
|
||||||
Route::get('tags', ['uses' => 'TagController@tags', 'as' => 'tags']);
|
//Route::get('tags', ['uses' => 'TagController@tags', 'as' => 'tags']);
|
||||||
Route::get('transaction-descriptions', ['uses' => 'TransactionController@transactionDescriptions', 'as' => 'transaction-descriptions']);
|
//Route::get('transaction-descriptions', ['uses' => 'TransactionController@transactionDescriptions', 'as' => 'transaction-descriptions']);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -58,12 +58,12 @@ Route::group(
|
|||||||
[
|
[
|
||||||
'namespace' => 'FireflyIII\Api\V2\Controllers\Chart',
|
'namespace' => 'FireflyIII\Api\V2\Controllers\Chart',
|
||||||
'prefix' => 'v2/chart',
|
'prefix' => 'v2/chart',
|
||||||
'as' => 'api.v1.chart.',
|
'as' => 'api.v2.chart.',
|
||||||
],
|
],
|
||||||
static function (): void {
|
static function (): void {
|
||||||
Route::get('account/dashboard', ['uses' => 'AccountController@dashboard', 'as' => 'account.dashboard']);
|
//Route::get('account/dashboard', ['uses' => 'AccountController@dashboard', 'as' => 'account.dashboard']);
|
||||||
Route::get('budget/dashboard', ['uses' => 'BudgetController@dashboard', 'as' => 'budget.dashboard']);
|
//Route::get('budget/dashboard', ['uses' => 'BudgetController@dashboard', 'as' => 'budget.dashboard']);
|
||||||
Route::get('category/dashboard', ['uses' => 'CategoryController@dashboard', 'as' => 'category.dashboard']);
|
//Route::get('category/dashboard', ['uses' => 'CategoryController@dashboard', 'as' => 'category.dashboard']);
|
||||||
Route::get('balance/balance', ['uses' => 'BalanceController@balance', 'as' => 'balance.balance']);
|
Route::get('balance/balance', ['uses' => 'BalanceController@balance', 'as' => 'balance.balance']);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
@ -77,7 +77,7 @@ Route::group(
|
|||||||
'as' => 'api.v2.summary.',
|
'as' => 'api.v2.summary.',
|
||||||
],
|
],
|
||||||
static function (): void {
|
static function (): void {
|
||||||
Route::get('basic', ['uses' => 'BasicController@basic', 'as' => 'basic']);
|
//Route::get('basic', ['uses' => 'BasicController@basic', 'as' => 'basic']);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
// V2 API route for all kinds of Transaction lists.
|
// V2 API route for all kinds of Transaction lists.
|
||||||
@ -91,11 +91,11 @@ Route::group(
|
|||||||
],
|
],
|
||||||
static function (): void {
|
static function (): void {
|
||||||
// basic list
|
// basic list
|
||||||
Route::get('transactions', ['uses' => 'TransactionController@list', 'as' => 'transactions.list']);
|
//Route::get('transactions', ['uses' => 'TransactionController@list', 'as' => 'transactions.list']);
|
||||||
|
|
||||||
// list by parent or related object.
|
// list by parent or related object.
|
||||||
// note how the check is done on the user group, not the user itself.
|
// note how the check is done on the user group, not the user itself.
|
||||||
Route::get('accounts/{userGroupAccount}/transactions', ['uses' => 'AccountController@list', 'as' => 'accounts.transactions']);
|
//Route::get('accounts/{userGroupAccount}/transactions', ['uses' => 'AccountController@list', 'as' => 'accounts.transactions']);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -109,7 +109,7 @@ Route::group(
|
|||||||
'as' => 'api.v2.net-worth.',
|
'as' => 'api.v2.net-worth.',
|
||||||
],
|
],
|
||||||
static function (): void {
|
static function (): void {
|
||||||
Route::get('', ['uses' => 'NetWorthController@get', 'as' => 'index']);
|
//Route::get('', ['uses' => 'NetWorthController@get', 'as' => 'index']);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -135,10 +135,10 @@ Route::group(
|
|||||||
'as' => 'api.v2.subscriptions.',
|
'as' => 'api.v2.subscriptions.',
|
||||||
],
|
],
|
||||||
static function (): void {
|
static function (): void {
|
||||||
Route::get('', ['uses' => 'IndexController@index', 'as' => 'index']);
|
// Route::get('', ['uses' => 'IndexController@index', 'as' => 'index']);
|
||||||
Route::get('{userGroupBill}', ['uses' => 'ShowController@show', 'as' => 'show']);
|
// Route::get('{userGroupBill}', ['uses' => 'ShowController@show', 'as' => 'show']);
|
||||||
Route::get('sum/paid', ['uses' => 'SumController@paid', 'as' => 'sum.paid']);
|
// Route::get('sum/paid', ['uses' => 'SumController@paid', 'as' => 'sum.paid']);
|
||||||
Route::get('sum/unpaid', ['uses' => 'SumController@unpaid', 'as' => 'sum.unpaid']);
|
// Route::get('sum/unpaid', ['uses' => 'SumController@unpaid', 'as' => 'sum.unpaid']);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -150,7 +150,7 @@ Route::group(
|
|||||||
'as' => 'api.v2.piggy-banks.',
|
'as' => 'api.v2.piggy-banks.',
|
||||||
],
|
],
|
||||||
static function (): void {
|
static function (): void {
|
||||||
Route::get('', ['uses' => 'IndexController@index', 'as' => 'index']);
|
// Route::get('', ['uses' => 'IndexController@index', 'as' => 'index']);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -162,7 +162,7 @@ Route::group(
|
|||||||
'as' => 'api.v2.currencies.',
|
'as' => 'api.v2.currencies.',
|
||||||
],
|
],
|
||||||
static function (): void {
|
static function (): void {
|
||||||
Route::get('', ['uses' => 'IndexController@index', 'as' => 'index']);
|
// Route::get('', ['uses' => 'IndexController@index', 'as' => 'index']);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -174,9 +174,9 @@ Route::group(
|
|||||||
'as' => 'api.v2.transactions.',
|
'as' => 'api.v2.transactions.',
|
||||||
],
|
],
|
||||||
static function (): void {
|
static function (): void {
|
||||||
Route::post('', ['uses' => 'StoreController@post', 'as' => 'store']);
|
// Route::post('', ['uses' => 'StoreController@post', 'as' => 'store']);
|
||||||
Route::get('{userGroupTransaction}', ['uses' => 'ShowController@show', 'as' => 'show']);
|
// Route::get('{userGroupTransaction}', ['uses' => 'ShowController@show', 'as' => 'show']);
|
||||||
Route::put('{userGroupTransaction}', ['uses' => 'UpdateController@update', 'as' => 'update']);
|
// Route::put('{userGroupTransaction}', ['uses' => 'UpdateController@update', 'as' => 'update']);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
// infinite (transactions) list:
|
// infinite (transactions) list:
|
||||||
@ -187,7 +187,7 @@ Route::group(
|
|||||||
'as' => 'api.v2.infinite.transactions.',
|
'as' => 'api.v2.infinite.transactions.',
|
||||||
],
|
],
|
||||||
static function (): void {
|
static function (): void {
|
||||||
Route::get('', ['uses' => 'TransactionController@infiniteList', 'as' => 'list']);
|
// Route::get('', ['uses' => 'TransactionController@infiniteList', 'as' => 'list']);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -199,11 +199,11 @@ Route::group(
|
|||||||
'as' => 'api.v2.budgets',
|
'as' => 'api.v2.budgets',
|
||||||
],
|
],
|
||||||
static function (): void {
|
static function (): void {
|
||||||
Route::get('', ['uses' => 'Budget\IndexController@index', 'as' => 'index']);
|
// Route::get('', ['uses' => 'Budget\IndexController@index', 'as' => 'index']);
|
||||||
Route::get('{budget}', ['uses' => 'Budget\ShowController@show', 'as' => 'show']);
|
// Route::get('{budget}', ['uses' => 'Budget\ShowController@show', 'as' => 'show']);
|
||||||
Route::get('{budget}/limits', ['uses' => 'BudgetLimit\IndexController@index', 'as' => 'budget-limits.index']);
|
// Route::get('{budget}/limits', ['uses' => 'BudgetLimit\IndexController@index', 'as' => 'budget-limits.index']);
|
||||||
Route::get('sum/budgeted', ['uses' => 'Budget\SumController@budgeted', 'as' => 'sum.budgeted']);
|
// Route::get('sum/budgeted', ['uses' => 'Budget\SumController@budgeted', 'as' => 'sum.budgeted']);
|
||||||
Route::get('sum/spent', ['uses' => 'Budget\SumController@spent', 'as' => 'sum.spent']);
|
// Route::get('sum/spent', ['uses' => 'Budget\SumController@spent', 'as' => 'sum.spent']);
|
||||||
// Route::get('{budget}/budgeted', ['uses' => 'Budget\ShowController@budgeted', 'as' => 'budget.budgeted']);
|
// Route::get('{budget}/budgeted', ['uses' => 'Budget\ShowController@budgeted', 'as' => 'budget.budgeted']);
|
||||||
// Route::get('{budget}/spent', ['uses' => 'Budget\ShowController@spent', 'as' => 'budget.spent']);
|
// Route::get('{budget}/spent', ['uses' => 'Budget\ShowController@spent', 'as' => 'budget.spent']);
|
||||||
}
|
}
|
||||||
@ -217,7 +217,7 @@ Route::group(
|
|||||||
'as' => 'api.v2.system.',
|
'as' => 'api.v2.system.',
|
||||||
],
|
],
|
||||||
static function (): void {
|
static function (): void {
|
||||||
Route::get('preferences/{preference}', ['uses' => 'PreferencesController@get', 'as' => 'preferences.get']);
|
// Route::get('preferences/{preference}', ['uses' => 'PreferencesController@get', 'as' => 'preferences.get']);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -229,32 +229,32 @@ Route::group(
|
|||||||
'as' => 'api.v2.user-groups.',
|
'as' => 'api.v2.user-groups.',
|
||||||
],
|
],
|
||||||
static function (): void {
|
static function (): void {
|
||||||
Route::get('', ['uses' => 'IndexController@index', 'as' => 'index']);
|
// Route::get('', ['uses' => 'IndexController@index', 'as' => 'index']);
|
||||||
Route::post('', ['uses' => 'StoreController@store', 'as' => 'store']);
|
// Route::post('', ['uses' => 'StoreController@store', 'as' => 'store']);
|
||||||
Route::get('{userGroup}', ['uses' => 'ShowController@show', 'as' => 'show']);
|
// Route::get('{userGroup}', ['uses' => 'ShowController@show', 'as' => 'show']);
|
||||||
Route::put('{userGroup}', ['uses' => 'UpdateController@update', 'as' => 'update']);
|
// Route::put('{userGroup}', ['uses' => 'UpdateController@update', 'as' => 'update']);
|
||||||
Route::post('{userGroup}/use', ['uses' => 'UpdateController@useUserGroup', 'as' => 'use']);
|
// Route::post('{userGroup}/use', ['uses' => 'UpdateController@useUserGroup', 'as' => 'use']);
|
||||||
Route::put('{userGroup}/update-membership', ['uses' => 'UpdateController@updateMembership', 'as' => 'updateMembership']);
|
// Route::put('{userGroup}/update-membership', ['uses' => 'UpdateController@updateMembership', 'as' => 'updateMembership']);
|
||||||
Route::delete('{userGroup}', ['uses' => 'DestroyController@destroy', 'as' => 'destroy']);
|
// Route::delete('{userGroup}', ['uses' => 'DestroyController@destroy', 'as' => 'destroy']);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
// V2 JSON API ROUTES
|
// V2 JSON API ROUTES
|
||||||
JsonApiRoute::server('v2')->prefix('v2')
|
//JsonApiRoute::server('v2')->prefix('v2')
|
||||||
->resources(function (ResourceRegistrar $server): void {
|
// ->resources(function (ResourceRegistrar $server): void {
|
||||||
// ACCOUNTS
|
// // ACCOUNTS
|
||||||
$server->resource('accounts', AccountController::class)
|
// $server->resource('accounts', AccountController::class)
|
||||||
->relationships(function (Relationships $relations): void {
|
// ->relationships(function (Relationships $relations): void {
|
||||||
$relations->hasOne('user')->readOnly();
|
// $relations->hasOne('user')->readOnly();
|
||||||
})
|
// })
|
||||||
;
|
// ;
|
||||||
|
//
|
||||||
// USERS
|
// // USERS
|
||||||
$server->resource('users', JsonApiController::class)->readOnly()->relationships(function (Relationships $relations): void {
|
// $server->resource('users', JsonApiController::class)->readOnly()->relationships(function (Relationships $relations): void {
|
||||||
$relations->hasMany('accounts')->readOnly();
|
// $relations->hasMany('accounts')->readOnly();
|
||||||
});
|
// });
|
||||||
})
|
// })
|
||||||
;
|
//;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ____ ____ __ .______ ______ __ __ .___________. _______ _______.
|
* ____ ____ __ .______ ______ __ __ .___________. _______ _______.
|
||||||
|
Loading…
Reference in New Issue
Block a user