nextstage-brasil / ns-util
Metodos e classes de utilidades diversas
1.71.24
2024-04-24 10:34 UTC
Requires
- php: >=7.4
- laravel/serializable-closure: ^1.2
- league/flysystem: ^1.0 || ^3.0
- league/flysystem-aws-s3-v3: ^1.0 || ^3.0
- nelexa/zip: ^3.3 || ^4.0
- phpmailer/phpmailer: ^6.1
- predis/predis: ^2.1
- sendgrid/sendgrid: ^7
- smottt/wideimage: ^1.1
- spatie/async: ^1.5
- dev-main
- 1.71.24
- 1.71.23
- 1.71.22
- 1.71.21
- 1.71.20
- 1.71.19
- 1.71.18
- 1.71.17
- 1.71.16
- 1.71.15
- 1.71.14
- 1.71.13
- 1.71.12
- 1.71.11
- 1.71.10
- 1.71.9
- 1.71.8
- 1.71.7
- 1.71.6
- 1.71.5
- 1.71.4
- 1.71.3
- 1.71.2
- 1.71.1
- 1.71.0
- 1.70.15
- 1.70.14
- 1.70.13
- 1.70.12
- 1.70.11
- 1.70.10
- 1.70.9
- 1.70.8
- 1.70.7
- 1.70.6
- 1.70.5
- 1.70.4
- 1.70.3
- 1.70.2
- 1.70.1
- 1.70.0
- 1.69.11
- 1.69.10
- 1.69.9
- 1.69.8
- 1.69.7
- 1.69.6
- 1.69.5
- 1.69.4
- 1.69.3
- 1.69.2
- 1.69.1
- 1.69.0
- 1.68.11
- 1.68.10
- 1.68.9
- 1.68.8
- 1.68.7
- 1.68.6
- 1.68.5
- 1.68.4
- 1.68.3
- 1.68.2
- 1.68.1
- 1.68.0
- 1.67.3
- 1.67.2
- 1.67.1
- 1.67.0
- 1.66.4
- 1.66.3
- 1.66.2
- 1.66.1
- 1.66.0
- 1.65.23
- 1.65.22
- 1.65.21
- 1.65.20
- 1.65.19
- 1.65.18
- 1.65.17
- 1.65.16
- 1.65.15
- 1.65.14
- 1.65.13
- 1.65.12
- 1.65.11
- 1.65.10
- 1.65.9
- 1.65.8
- 1.65.7
- 1.65.6
- 1.65.5
- 1.65.4
- 1.65.3
- 1.65.2
- 1.65.1
- 1.65.0
- 1.64.15
- 1.64.14
- 1.64.13
- 1.64.12
- 1.64.11
- 1.64.10
- 1.64.9
- 1.64.8
- 1.64.7
- 1.64.6
- 1.64.5
- 1.64.4
- 1.64.3
- 1.64.2
- 1.64.1
- 1.64.0
- 1.63.11
- 1.63.10
- 1.63.9
- 1.63.8
- 1.63.7
- 1.63.6
- 1.63.5
- 1.63.4
- 1.63.3
- 1.63.2
- 1.63.1
- 1.63.0
- 1.62.2
- 1.62.1
- 1.62.0
- 1.61.5
- 1.61.4
- 1.61.3
- 1.61.2
- 1.61.1
- 1.61.0
- 1.60.13
- 1.60.12
- 1.60.11
- 1.60.10
- 1.60.9
- 1.60.8
- 1.60.7
- 1.60.6
- 1.60.5
- 1.60.4
- 1.60.3
- 1.60.2
- 1.60.1
- 1.60.0
- 1.59.12
- 1.59.11
- 1.59.10
- 1.59.9
- 1.59.8
- 1.59.7
- 1.59.6
- 1.59.5
- 1.59.4
- 1.59.3
- 1.59.2
- 1.59.1
- 1.59.0
- 1.58.5
- 1.58.4
- 1.58.3
- 1.58.2
- 1.58.1
- 1.58.0
- 1.57.2
- 1.57.1
- 1.57.0
- 1.56.1
- 1.56.0
- 1.55.5
- 1.55.4
- 1.55.3
- 1.55.2
- 1.55.1
- 1.55.0
- 1.54.2
- 1.54.1
- 1.54.0
- 1.53.7
- 1.53.6
- 1.53.5
- 1.53.4
- 1.53.3
- 1.53.2
- 1.53.1
- 1.53.0
- 1.52.0
- 1.51.0
- 1.50.3
- 1.50.2
- 1.50.1
- 1.50.0
- 1.49.5
- 1.49.4
- 1.49.3
- 1.49.2
- 1.49.1
- 1.49.0
- 1.48.0
- 1.47.13
- 1.47.12
- 1.47.11
- 1.47.10
- 1.47.9
- 1.47.8
- 1.47.7
- 1.47.6
- 1.47.5
- 1.47.3
- 1.47.2
- 1.47.1
- 1.47.0
- 1.46.0
- 1.45.1
- 1.45.0
- 1.44.0
- 1.43.3
- 1.43.2
- 1.43.1
- 1.43.0
- 1.42.1
- 1.42.0
- 1.41.2
- 1.41.1
- 1.41.0
- 1.40.0
- 1.39.6
- 1.39.5
- 1.39.4
- 1.39.3
- 1.39.2
- 1.39.1
- 1.39.0
- 1.38.2
- 1.38.1
- 1.38.0
- 1.37.0
- 1.36.0
- 1.35.0
- 1.34.7
- 1.34.6
- 1.34.5
- 1.34.4
- 1.34.3
- 1.34.2
- 1.34.1
- 1.34.0
- 1.33.11
- 1.33.10
- 1.33.9
- 1.33.8
- 1.33.7
- 1.33.3
- 1.33.2
- 1.33.1
- 1.33.0
- 1.32.30
- 1.32.29
- 1.32.28
- 1.32.27
- 1.32.26
- 1.32.25
- 1.32.24
- 1.32.23
- 1.32.22
- 1.32.21
- 1.32.20
- 1.32.19
- 1.32.18
- 1.32.17
- 1.32.16
- 1.32.15
- 1.32.14
- 1.32.13
- 1.32.12
- 1.32.11
- 1.32.10
- 1.32.9
- 1.32.8
- 1.32.7
- 1.32.6
- 1.32.5
- 1.32.4
- 1.32.3
- 1.32.2
- 1.32.1
- 1.32.0
- 1.31.0
- 1.30.5
- 1.30.4
- 1.30.3
- 1.30.2
- 1.30.1
- 1.30.0
- 1.29.1
- 1.29.0
- 1.28.5
- 1.28.4
- 1.28.3
- 1.28.2
- 1.28.1
- 1.28.0
- 1.27.5
- 1.27.4
- 1.27.3
- 1.27.2
- 1.27.1
- 1.27.0
- 1.26.1
- 1.26.0
- 1.25.1
- 1.25.0
- 1.24.12
- 1.24.11
- 1.24.10
- 1.24.9
- 1.24.8
- 1.24.7
- 1.24.6
- 1.24.5
- 1.24.4
- 1.24.3
- 1.24.2
- 1.24.1
- 1.24.0
- 1.23.2
- 1.23.1
- 1.23.0
- 1.22.4
- 1.22.3
- 1.22.2
- 1.22.1
- 1.22.0
- 1.21.2
- 1.21.1
- 1.21.0
- 1.20.0
- 1.19.3
- 1.19.2
- 1.19.1
- 1.19.0
- 1.18.6
- 1.18.5
- 1.18.4
- 1.18.3
- 1.18.2
- 1.18.1
- 1.18.0
- 1.17.0
- 1.16.3
- 1.16.2
- 1.16.1
- 1.16.0
- 1.15.1
- 1.15.0
- 1.14.3
- 1.14.2
- 1.14.1
- 1.14.0
- 1.13.0
- 1.12.0
- 1.11.3
- 1.11.2
- 1.11.1
- 1.11.0
- 1.10.0
- 1.9.10
- 1.9.9
- 1.9.8
- 1.9.7
- 1.9.6
- 1.9.5
- 1.9.4
- 1.9.3
- 1.9.2
- 1.8.7
- 1.8.6
- 1.8.5
- 1.8.4
- 1.8.3
- 1.8.2
- 1.8.1
- 1.8.0
- 1.7.0
- 1.6.3
- 1.6.2
- 1.6.1
- 1.6.0
- 1.5.2
- 1.5.1
- 1.5.0
- 1.4.1
- 1.4.0
- 1.3.0
- 1.2.3
- 1.2.2
- 1.2.1
- 1.1.72
- 1.1.71
- 1.1.70
- 1.1.69
- 1.1.67
- 1.1.66
- 1.1.65
- 1.1.64
- 1.1.63
- 1.1.62
- 1.1.61
- 1.1.60
- 1.1.59
- 1.1.58
- 1.1.55
- 1.1.41
- 1.1.40
- 1.1.39
- 1.1.38
- 1.1.37
- 1.1.36
- 1.1.35
- 1.1.34
- 1.1.33
- 1.1.32
- 1.1.31
- 1.1.30
- 1.1.29
- 1.1.28
- 1.1.27
- 1.1.26
- 1.1.25
- 1.1.24
- 1.1.23
- 1.1.22
- 1.1.21
- 1.1.20
- 1.1.19
- 1.1.18
- 1.1.17
- 1.1.16
- 1.1.15
- 1.1.14
- 1.1.13
- 1.1.12
- 1.1.11
- 1.1.10
- 1.1.9
- 1.1.8
- 1.1.7
- 1.1.6
- 1.1.5
- 1.1.4
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.62
- 1.0.61
- 1.0.60
- 1.0.59
- 1.0.58
- 1.0.57
- 1.0.56
- 1.0.55
- 1.0.54
- 1.0.53
- 1.0.52
- 1.0.51
- 1.0.50
- 1.0.49
- 1.0.48
- 1.0.47
- 1.0.46
- 1.0.45
- 1.0.44
- 1.0.43
- 1.0.42
- 1.0.41
- 1.0.40
- 1.0.39
- 1.0.38
- 1.0.37
- 1.0.36
- 1.0.35
- 1.0.34
- 1.0.33
- 1.0.32
- 1.0.31
- 1.0.30
- 1.0.29
- 1.0.28
- 1.0.27
- 1.0.25
- 1.0.24
- 1.0.23
- 1.0.22
- 1.0.21
- 1.0.20
- 1.0.19
- 1.0.18
- 1.0.17
- 1.0.16
- 1.0.15
- 1.0.14
- 1.0.13
- 1.0.12
- 1.0.11
- 1.0.10
- 1.0.9
- 1.0.8
- 1.0.7
- 1.0.6
- 1.0.5
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- dev-develop
This package is auto-updated.
Last update: 2024-04-24 10:34:27 UTC
README
Examples
API
- Atention: onError and onSuccess order on middlewares is important
<?php
use AppLibrary\App;
use JDrel\NsLibrary\Entities\Logs;
use NsUtil\Api;
use NsUtil\Helper;
use NsUtil\Services\RateLimiter;
if (is_dir(__DIR__ . '/../../_build/')) {
error_reporting(E_ALL);
}
include __DIR__ . '/../../vendor/autoload.php';
App::init();
App::setDevelopeMode();
$namespace = Helper::getPsr4Name() . '\\Routers';
// Api
$api = new Api();
$headers = $api->getHeaders(true);
$resource = Helper::name2CamelCase($api->getConfigData()['rest']['resource']);
$apikey = $api->getHeaders(true)['apikey'] ?? $api->getConfigData()['ParamsRouter'][3] ?? '-1';
// Rotas liberadas sem precisar de autenticação de usuário
$freeRoutes = ['version', 'webhooks', 'cpuAgent'];
// log de uso
$hit = (new Logs([
'appnameLog' => 'Api Consume',
'textLog' => $apikey,
'extrasLog' => [
'route' => $resource,
'headers' => $headers,
'payload' => $api->getBody()
]
]))->save();
// Rate, Middlewares and Resolver
$dados = [];
$api
->onError(fn ($param1, $param2) => $hit->setExtrasLog(array_merge($hit->getExtrasLog('array'), ['response' => ['data' => $param1, 'code' => $param2]]))->save())
->onSuccess(fn ($param1, $param2) => $hit->setExtrasLog(array_merge($hit->getExtrasLog('array'), ['response' => ['code' => $param2]]))->save())
->rateLimit(3, 60)
->middleware('Invalid APIKEY', 403, fn () => in_array($resource, $freeRoutes) ? true : App::validaApiKey($apikey))
->rest($namespace);
Rate Limit
// to clear:
// php nsutil rate:clear {appkey_or_IP}
try {
// rate 120 calls by ip per minute
RateLimiter::byIP(120, RateLimiter::PER_MINUTE);
// rate 100 calls per apikey per day
RateLimiter::byKey('my-app-key-1', 100, RateLimiter::PER_DAY);
// Exception on error to connect on redis
} catch (RedisConnectionException $exc) {
http_response_code($exc->getCode() ?? 400);
echo "REDIS-ERROR: " . $exc->getMessage() . PHP_EOL;
// Too many requests (429)
} catch (TooManyRequestException $exc) {
http_response_code($exc->getCode());
echo $exc->getMessage() . PHP_EOL;
// Others exceptions
} catch (Exception $exc) {
http_response_code($exc->getCode() ?? 400);
echo "ERROR: " . $exc->getMessage() . PHP_EOL;
}
Composer local
Configure a .env com o parametro LOCAL_COMPOSER listando os paths absoutos a serem atualizados localmente
Ex.: LOCAL_COMPOSER="/home/user/apps/app1;/home/user/apps/app2"
Dentro deste projeto será atualizado a pasta /vendor/nextstage-brasil/ns-util/src com a cópia do conteudo deste projeto.
Para executar: sudo php nsutil composer:local
Atenção: se executar isso dentro de um docker não ira funcionar, pois os paths não estarão disponiveis.