1717 */
1818import 'dart:async' ;
1919import 'package:shared_preferences/shared_preferences.dart' ;
20+ import '../exceptions/rate_limit_exception.dart' ;
2021
2122class RateLimiterService {
23+ static final RateLimiterService _instance = RateLimiterService ._internal ();
24+ factory RateLimiterService () => _instance;
25+ RateLimiterService ._internal ();
26+
2227 static const int maxRequests = 10 ;
2328 static const Duration windowDuration = Duration (minutes: 1 );
2429 static const String _storageKey = 'rate_limiter_timestamps' ;
@@ -30,12 +35,6 @@ class RateLimiterService {
3035 bool _isInitialized = false ;
3136 Completer <void >? _initializationCompleter;
3237
33- static final RateLimiterService _instance = RateLimiterService ._internal ();
34-
35- factory RateLimiterService () => _instance;
36-
37- RateLimiterService ._internal ();
38-
3938 Future <void > _loadTimestamps () async {
4039 if (_isInitialized) return ;
4140
@@ -156,13 +155,3 @@ class RateLimiterService {
156155 _quotaController.close ();
157156 }
158157}
159-
160- class RateLimitException implements Exception {
161- final String message;
162- final Duration waitTime;
163-
164- RateLimitException (this .message, this .waitTime);
165-
166- @override
167- String toString () => message;
168- }
0 commit comments