the browser-facing portion of osu!
at master 833 B view raw
1<?php 2 3// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the GNU Affero General Public License v3.0. 4// See the LICENCE file in the repository root for full licence text. 5 6declare(strict_types=1); 7 8namespace App\Http\Middleware; 9 10use Closure; 11use Illuminate\Http\Request; 12 13class RequestCost 14{ 15 public static function getCost(Request $request): int 16 { 17 return $request->attributes->get('request_cost', 1); 18 } 19 20 public static function setCost(int $cost, ?Request $request = null) 21 { 22 // max(1, ) is a convenience for callers that use count() 23 ($request ?? request())->attributes->set('request_cost', max(1, $cost)); 24 } 25 26 public function handle(Request $request, Closure $next, int $cost = 1) 27 { 28 static::setCost($cost, $request); 29 30 return $next($request); 31 } 32}