@@ -238,6 +238,7 @@ async fn get_requester(
238
238
activity_tracker : & BoundActivityTracker ,
239
239
mut repo : BoxRepository ,
240
240
session_info : SessionInfo ,
241
+ user_agent : Option < String > ,
241
242
token : Option < & str > ,
242
243
) -> Result < Requester , RouteError > {
243
244
let entity = if let Some ( token) = token {
@@ -301,6 +302,7 @@ async fn get_requester(
301
302
let requester = Requester {
302
303
entity,
303
304
ip_address : activity_tracker. ip ( ) ,
305
+ user_agent,
304
306
} ;
305
307
306
308
repo. cancel ( ) . await ?;
@@ -318,19 +320,22 @@ pub async fn post(
318
320
cookie_jar : CookieJar ,
319
321
content_type : Option < TypedHeader < ContentType > > ,
320
322
authorization : Option < TypedHeader < Authorization < Bearer > > > ,
323
+ user_agent : Option < TypedHeader < headers:: UserAgent > > ,
321
324
body : Body ,
322
325
) -> Result < impl IntoResponse , RouteError > {
323
326
let body = body. into_data_stream ( ) ;
324
327
let token = authorization
325
328
. as_ref ( )
326
329
. map ( |TypedHeader ( Authorization ( bearer) ) | bearer. token ( ) ) ;
330
+ let user_agent = user_agent. map ( |TypedHeader ( h) | h. to_string ( ) ) ;
327
331
let ( session_info, _cookie_jar) = cookie_jar. session_info ( ) ;
328
332
let requester = get_requester (
329
333
undocumented_oauth2_access,
330
334
& clock,
331
335
& activity_tracker,
332
336
repo,
333
337
session_info,
338
+ user_agent,
334
339
token,
335
340
)
336
341
. await ?;
@@ -370,18 +375,21 @@ pub async fn get(
370
375
activity_tracker : BoundActivityTracker ,
371
376
cookie_jar : CookieJar ,
372
377
authorization : Option < TypedHeader < Authorization < Bearer > > > ,
378
+ user_agent : Option < TypedHeader < headers:: UserAgent > > ,
373
379
RawQuery ( query) : RawQuery ,
374
380
) -> Result < impl IntoResponse , FancyError > {
375
381
let token = authorization
376
382
. as_ref ( )
377
383
. map ( |TypedHeader ( Authorization ( bearer) ) | bearer. token ( ) ) ;
384
+ let user_agent = user_agent. map ( |TypedHeader ( h) | h. to_string ( ) ) ;
378
385
let ( session_info, _cookie_jar) = cookie_jar. session_info ( ) ;
379
386
let requester = get_requester (
380
387
undocumented_oauth2_access,
381
388
& clock,
382
389
& activity_tracker,
383
390
repo,
384
391
session_info,
392
+ user_agent,
385
393
token,
386
394
)
387
395
. await ?;
@@ -422,6 +430,7 @@ pub fn schema_builder() -> SchemaBuilder {
422
430
pub struct Requester {
423
431
entity : RequestingEntity ,
424
432
ip_address : Option < IpAddr > ,
433
+ user_agent : Option < String > ,
425
434
}
426
435
427
436
impl Requester {
@@ -432,6 +441,13 @@ impl Requester {
432
441
RequesterFingerprint :: EMPTY
433
442
}
434
443
}
444
+
445
+ pub fn for_policy ( & self ) -> mas_policy:: Requester {
446
+ mas_policy:: Requester {
447
+ ip_address : self . ip_address ,
448
+ user_agent : self . user_agent . clone ( ) ,
449
+ }
450
+ }
435
451
}
436
452
437
453
impl Deref for Requester {
0 commit comments