mas_handlers/activity_tracker/
bound.rs1use std::net::IpAddr;
8
9use mas_data_model::{
10 BrowserSession, Clock, CompatSession, Session, personal::session::PersonalSession,
11};
12
13use crate::activity_tracker::ActivityTracker;
14
15#[derive(Clone)]
17pub struct Bound {
18 tracker: ActivityTracker,
19 ip: Option<IpAddr>,
20}
21
22impl Bound {
23 #[must_use]
25 pub fn new(tracker: ActivityTracker, ip: Option<IpAddr>) -> Self {
26 Self { tracker, ip }
27 }
28
29 #[must_use]
31 pub fn ip(&self) -> Option<IpAddr> {
32 self.ip
33 }
34
35 pub async fn record_oauth2_session(&self, clock: &dyn Clock, session: &Session) {
37 self.tracker
38 .record_oauth2_session(clock, session, self.ip)
39 .await;
40 }
41
42 pub async fn record_personal_session(&self, clock: &dyn Clock, session: &PersonalSession) {
44 self.tracker
45 .record_personal_session(clock, session, self.ip)
46 .await;
47 }
48
49 pub async fn record_compat_session(&self, clock: &dyn Clock, session: &CompatSession) {
51 self.tracker
52 .record_compat_session(clock, session, self.ip)
53 .await;
54 }
55
56 pub async fn record_browser_session(&self, clock: &dyn Clock, session: &BrowserSession) {
58 self.tracker
59 .record_browser_session(clock, session, self.ip)
60 .await;
61 }
62}