@@ -6,13 +6,12 @@ use std::time::Duration;
6
6
7
7
use crate :: schema:: { publish_limit_buckets, publish_rate_overrides} ;
8
8
use crate :: sql:: { date_part, floor, greatest, interval_part, least} ;
9
- use crate :: util:: errors:: { cargo_err , AppResult , TooManyRequests } ;
9
+ use crate :: util:: errors:: { AppResult , TooManyRequests } ;
10
10
11
11
#[ derive( Debug , Clone , Copy ) ]
12
12
pub struct PublishRateLimit {
13
13
pub rate : Duration ,
14
14
pub burst : i32 ,
15
- pub daily : Option < i64 > ,
16
15
}
17
16
18
17
impl Default for PublishRateLimit {
@@ -27,14 +26,9 @@ impl Default for PublishRateLimit {
27
26
. parse ( )
28
27
. ok ( )
29
28
. unwrap_or ( 5 ) ;
30
- let daily = dotenv:: var ( "MAX_NEW_VERSIONS_DAILY" )
31
- . unwrap_or_default ( )
32
- . parse ( )
33
- . ok ( ) ;
34
29
Self {
35
30
rate : Duration :: from_secs ( 60 ) * minutes,
36
31
burst,
37
- daily,
38
32
}
39
33
}
40
34
}
@@ -112,27 +106,6 @@ impl PublishRateLimit {
112
106
use diesel:: dsl:: * ;
113
107
( self . rate . as_millis ( ) as i64 ) . milliseconds ( )
114
108
}
115
-
116
- pub fn check_daily_limit ( & self , krate_id : i32 , conn : & PgConnection ) -> AppResult < ( ) > {
117
- use crate :: schema:: versions:: dsl:: * ;
118
- use diesel:: dsl:: { count_star, now, IntervalDsl } ;
119
-
120
- if let Some ( daily_limit) = self . daily {
121
- let today: i64 = versions
122
- . filter ( crate_id. eq ( krate_id) )
123
- . filter ( created_at. gt ( now - 24 . hours ( ) ) )
124
- . select ( count_star ( ) )
125
- . first ( conn)
126
- . optional ( ) ?
127
- . unwrap_or_default ( ) ;
128
- if today >= daily_limit {
129
- return Err ( cargo_err (
130
- "You have published too many versions of this crate in the last 24 hours" ,
131
- ) ) ;
132
- }
133
- }
134
- Ok ( ( ) )
135
- }
136
109
}
137
110
138
111
#[ cfg( test) ]
@@ -149,7 +122,6 @@ mod tests {
149
122
let rate = PublishRateLimit {
150
123
rate : Duration :: from_secs ( 1 ) ,
151
124
burst : 10 ,
152
- daily : None ,
153
125
} ;
154
126
let bucket = rate. take_token ( new_user ( & conn, "user1" ) ?, now, & conn) ?;
155
127
let expected = Bucket {
@@ -162,7 +134,6 @@ mod tests {
162
134
let rate = PublishRateLimit {
163
135
rate : Duration :: from_millis ( 50 ) ,
164
136
burst : 20 ,
165
- daily : None ,
166
137
} ;
167
138
let bucket = rate. take_token ( new_user ( & conn, "user2" ) ?, now, & conn) ?;
168
139
let expected = Bucket {
@@ -182,7 +153,6 @@ mod tests {
182
153
let rate = PublishRateLimit {
183
154
rate : Duration :: from_secs ( 1 ) ,
184
155
burst : 10 ,
185
- daily : None ,
186
156
} ;
187
157
let user_id = new_user_bucket ( & conn, 5 , now) ?. user_id ;
188
158
let bucket = rate. take_token ( user_id, now, & conn) ?;
@@ -203,7 +173,6 @@ mod tests {
203
173
let rate = PublishRateLimit {
204
174
rate : Duration :: from_secs ( 1 ) ,
205
175
burst : 10 ,
206
- daily : None ,
207
176
} ;
208
177
let user_id = new_user_bucket ( & conn, 5 , now) ?. user_id ;
209
178
let refill_time = now + chrono:: Duration :: seconds ( 2 ) ;
@@ -229,7 +198,6 @@ mod tests {
229
198
let rate = PublishRateLimit {
230
199
rate : Duration :: from_millis ( 100 ) ,
231
200
burst : 10 ,
232
- daily : None ,
233
201
} ;
234
202
let user_id = new_user_bucket ( & conn, 5 , now) ?. user_id ;
235
203
let refill_time = now + chrono:: Duration :: milliseconds ( 300 ) ;
@@ -251,7 +219,6 @@ mod tests {
251
219
let rate = PublishRateLimit {
252
220
rate : Duration :: from_millis ( 100 ) ,
253
221
burst : 10 ,
254
- daily : None ,
255
222
} ;
256
223
let user_id = new_user_bucket ( & conn, 5 , now) ?. user_id ;
257
224
let bucket = rate. take_token ( user_id, now + chrono:: Duration :: milliseconds ( 250 ) , & conn) ?;
@@ -273,7 +240,6 @@ mod tests {
273
240
let rate = PublishRateLimit {
274
241
rate : Duration :: from_secs ( 1 ) ,
275
242
burst : 10 ,
276
- daily : None ,
277
243
} ;
278
244
let user_id = new_user_bucket ( & conn, 1 , now) ?. user_id ;
279
245
let bucket = rate. take_token ( user_id, now, & conn) ?;
@@ -297,7 +263,6 @@ mod tests {
297
263
let rate = PublishRateLimit {
298
264
rate : Duration :: from_secs ( 1 ) ,
299
265
burst : 10 ,
300
- daily : None ,
301
266
} ;
302
267
let user_id = new_user_bucket ( & conn, 0 , now) ?. user_id ;
303
268
let refill_time = now + chrono:: Duration :: seconds ( 1 ) ;
@@ -320,7 +285,6 @@ mod tests {
320
285
let rate = PublishRateLimit {
321
286
rate : Duration :: from_secs ( 1 ) ,
322
287
burst : 10 ,
323
- daily : None ,
324
288
} ;
325
289
let user_id = new_user_bucket ( & conn, 8 , now) ?. user_id ;
326
290
let refill_time = now + chrono:: Duration :: seconds ( 4 ) ;
@@ -343,7 +307,6 @@ mod tests {
343
307
let rate = PublishRateLimit {
344
308
rate : Duration :: from_secs ( 1 ) ,
345
309
burst : 10 ,
346
- daily : None ,
347
310
} ;
348
311
let user_id = new_user ( & conn, "user1" ) ?;
349
312
let other_user_id = new_user ( & conn, "user2" ) ?;
@@ -371,7 +334,6 @@ mod tests {
371
334
let rate = PublishRateLimit {
372
335
rate : Duration :: from_secs ( 1 ) ,
373
336
burst : 10 ,
374
- daily : None ,
375
337
} ;
376
338
let user_id = new_user ( & conn, "user1" ) ?;
377
339
let other_user_id = new_user ( & conn, "user2" ) ?;
0 commit comments