add brownout toggle

This commit is contained in:
Irfan 2022-02-10 22:13:26 +05:00
parent 14cbe36be6
commit ebe3bc9cc9
5 changed files with 67 additions and 5 deletions

View File

@ -6,6 +6,7 @@ APP_URL=http://localhost
APP_DEPRECATION=false
APP_DEPRECATION_DATE=2022-02-10T16:02:50+00:00
APP_DEPRECATION_INFO=https://bit.ly/jikan-v3-deprecation
APP_BROWNOUT=false
CACHE_DRIVER=file
QUEUE_CONNECTION=redis

View File

@ -0,0 +1,40 @@
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
/**
* Class BrownoutMiddleware
* @package App\Http\Middleware
*
*
*/
class BrownoutMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle(Request $request, Closure $next)
{
if (env('APP_BROWNOUT') == false) {
return $next($request);
}
$time = date("Hi");
$hour = (int) substr($time, 0, 2);
$minutes = (int) substr($time, 2, 3);
$isEvenHour = $hour % 2 == 0;
if ($isEvenHour && $minutes <= 15) {
return response('', 410);
}
return $next($request);
}
}

View File

@ -72,7 +72,8 @@ $app->routeMiddleware([
'jikan-response' => App\Http\Middleware\JikanResponseHandler::class,
'throttle' => App\Http\Middleware\Throttle::class,
'etag' => \App\Http\Middleware\EtagMiddleware::class,
'microcaching' => \App\Http\Middleware\MicroCaching::class
'microcaching' => \App\Http\Middleware\MicroCaching::class,
'brownout' => \App\Http\Middleware\BrownoutMiddleware::class
]);
/*
@ -116,9 +117,13 @@ $commonMiddleware = [
'etag',
'microcaching',
'jikan-response',
'throttle'
'throttle',
];
if (env('APP_BROWNOUT')) {
$commonMiddleware[] = 'brownout';
}
$app->router->group(
[
'prefix' => 'v3',

View File

@ -1,7 +1,20 @@
<?php
$router->get('/', function () use ($router) {
return response()->json([
$body = [];
$headers = [];
if (env('APP_DEPRECATION')) {
$body['API_DEPRECATION'] = env('APP_DEPRECATION');
$body['API_DEPRECATION_DATE'] = env('APP_DEPRECATION_DATE');
$body['API_DEPRECATION_INFO'] = env('APP_DEPRECATION_INFO');
$headers['X-API-Deprecation'] = env('APP_DEPRECATION');
$headers['X-API-Deprecation-Date'] = env('APP_DEPRECATION_DATE');
$headers['X-API-Deprecation-Info'] = env('APP_DEPRECATION_INFO');
}
$body += [
'NOTICE' => 'Please migrate to v4: https://docs.api.jikan.moe/',
'Author' => '@irfanDahir',
'Discord' => 'http://discord.jikan.moe',
'Version' => JIKAN_REST_API_VERSION,
@ -11,7 +24,11 @@ $router->get('/', function () use ($router) {
'GitHub' => 'https://github.com/jikan-me/jikan',
'PRODUCTION_API_URL' => 'https://api.jikan.moe/v3/',
'STATUS_URL' => 'https://status.jikan.moe'
]);
];
return response()
->json($body)
->withHeaders($headers);
});
$router->group(