88
99class StoreRateLimitsListener
1010{
11+ protected array $ headers = [
12+ 'X-RateLimit-Limit ' ,
13+ 'X-RateLimit-Remaining ' ,
14+ 'X-RateLimit-Reset ' ,
15+ 'X-RateLimit-Minutely-Limit ' ,
16+ 'X-RateLimit-Minutely-Remaining ' ,
17+ 'X-RateLimit-Minutely-Reset ' ,
18+ ];
19+
1120 public function handle (ExactResponseEvent $ event ): void
1221 {
1322 $ response = $ event ->response ;
@@ -16,15 +25,23 @@ public function handle(ExactResponseEvent $event): void
1625 return ;
1726 }
1827
28+ $ headers = $ response ->headers ();
29+
30+ $ missing = array_diff ($ this ->headers , array_keys ($ headers ));
31+
32+ if (count ($ missing ) > 0 ) {
33+ return ;
34+ }
35+
1936 RateLimit::query ()->updateOrCreate ([
2037 'exact_division ' => $ event ->division ,
2138 'timestamp ' => now ()->startOfDay ()->getTimestamp (),
2239 ], [
23- 'limit ' => $ response ->header ('X-RateLimit-Limit ' ),
24- 'remaining ' => $ response ->header ('X-RateLimit-Remaining ' ),
40+ 'limit ' => ( int ) $ response ->header ('X-RateLimit-Limit ' ),
41+ 'remaining ' => ( int ) $ response ->header ('X-RateLimit-Remaining ' ),
2542 'reset_at ' => Carbon::createFromTimestampMs ($ response ->header ('X-RateLimit-Reset ' )),
26- 'minutely_limit ' => $ response ->header ('X-RateLimit-Minutely-Limit ' ),
27- 'minutely_remaining ' => $ response ->header ('X-RateLimit-Minutely-Remaining ' ),
43+ 'minutely_limit ' => ( int ) $ response ->header ('X-RateLimit-Minutely-Limit ' ),
44+ 'minutely_remaining ' => ( int ) $ response ->header ('X-RateLimit-Minutely-Remaining ' ),
2845 'minutely_reset_at ' => Carbon::createFromTimestampMs ($ response ->header ('X-RateLimit-Minutely-Reset ' )),
2946 ]);
3047 }
0 commit comments