use super::{
AuthMetricOperation, AuthMetricOutcome, AuthMetricReason, AuthMetricSurface, AuthMetrics,
auth_session_endpoint, session_bootstrap_rejected_capacity_predicate,
session_bootstrap_rejected_disabled_predicate,
session_bootstrap_rejected_replay_conflict_predicate,
session_bootstrap_rejected_replay_reused_predicate,
session_bootstrap_rejected_subject_mismatch_predicate,
session_bootstrap_rejected_subject_rejected_predicate,
session_bootstrap_rejected_token_invalid_predicate,
session_bootstrap_rejected_ttl_invalid_predicate,
session_bootstrap_rejected_wallet_caller_rejected_predicate,
session_bootstrap_replay_idempotent_predicate, session_cleared_predicate,
session_created_predicate, session_fallback_invalid_subject_predicate,
session_fallback_raw_caller_predicate, session_pruned_predicate, session_replaced_predicate,
};
use crate::{ids::AccessMetricKind, ops::runtime::metrics::access::AccessMetrics};
pub fn record_session_bootstrap_rejected_disabled() {
record_session_metric(
AuthMetricOperation::Bootstrap,
AuthMetricOutcome::Rejected,
AuthMetricReason::Disabled,
session_bootstrap_rejected_disabled_predicate(),
);
}
pub fn record_session_bootstrap_rejected_capacity() {
record_session_metric(
AuthMetricOperation::Bootstrap,
AuthMetricOutcome::Rejected,
AuthMetricReason::Capacity,
session_bootstrap_rejected_capacity_predicate(),
);
}
pub fn record_session_bootstrap_rejected_wallet_caller_rejected() {
record_session_metric(
AuthMetricOperation::Bootstrap,
AuthMetricOutcome::Rejected,
AuthMetricReason::WalletCallerRejected,
session_bootstrap_rejected_wallet_caller_rejected_predicate(),
);
}
pub fn record_session_bootstrap_rejected_subject_rejected() {
record_session_metric(
AuthMetricOperation::Bootstrap,
AuthMetricOutcome::Rejected,
AuthMetricReason::SubjectRejected,
session_bootstrap_rejected_subject_rejected_predicate(),
);
}
pub fn record_session_bootstrap_rejected_replay_conflict() {
record_session_metric(
AuthMetricOperation::Bootstrap,
AuthMetricOutcome::Rejected,
AuthMetricReason::ReplayConflict,
session_bootstrap_rejected_replay_conflict_predicate(),
);
}
pub fn record_session_bootstrap_rejected_replay_reused() {
record_session_metric(
AuthMetricOperation::Bootstrap,
AuthMetricOutcome::Rejected,
AuthMetricReason::ReplayReused,
session_bootstrap_rejected_replay_reused_predicate(),
);
}
pub fn record_session_bootstrap_rejected_token_invalid() {
record_session_metric(
AuthMetricOperation::Bootstrap,
AuthMetricOutcome::Rejected,
AuthMetricReason::TokenInvalid,
session_bootstrap_rejected_token_invalid_predicate(),
);
}
pub fn record_session_bootstrap_rejected_subject_mismatch() {
record_session_metric(
AuthMetricOperation::Bootstrap,
AuthMetricOutcome::Rejected,
AuthMetricReason::SubjectMismatch,
session_bootstrap_rejected_subject_mismatch_predicate(),
);
}
pub fn record_session_bootstrap_rejected_ttl_invalid() {
record_session_metric(
AuthMetricOperation::Bootstrap,
AuthMetricOutcome::Rejected,
AuthMetricReason::TtlInvalid,
session_bootstrap_rejected_ttl_invalid_predicate(),
);
}
pub fn record_session_bootstrap_replay_idempotent() {
record_session_metric(
AuthMetricOperation::Bootstrap,
AuthMetricOutcome::Idempotent,
AuthMetricReason::Replay,
session_bootstrap_replay_idempotent_predicate(),
);
}
pub fn record_session_created() {
record_session_metric(
AuthMetricOperation::Session,
AuthMetricOutcome::Completed,
AuthMetricReason::Created,
session_created_predicate(),
);
}
pub fn record_session_replaced() {
record_session_metric(
AuthMetricOperation::Session,
AuthMetricOutcome::Completed,
AuthMetricReason::Replaced,
session_replaced_predicate(),
);
}
pub fn record_session_cleared() {
record_session_metric(
AuthMetricOperation::Session,
AuthMetricOutcome::Completed,
AuthMetricReason::Cleared,
session_cleared_predicate(),
);
}
pub fn record_session_pruned(removed: usize) {
for _ in 0..removed {
record_session_metric(
AuthMetricOperation::Session,
AuthMetricOutcome::Completed,
AuthMetricReason::Pruned,
session_pruned_predicate(),
);
}
}
pub fn record_session_fallback_raw_caller() {
record_session_metric(
AuthMetricOperation::IdentityFallback,
AuthMetricOutcome::Completed,
AuthMetricReason::RawCaller,
session_fallback_raw_caller_predicate(),
);
}
pub fn record_session_fallback_invalid_subject() {
record_session_metric(
AuthMetricOperation::IdentityFallback,
AuthMetricOutcome::Completed,
AuthMetricReason::InvalidSubject,
session_fallback_invalid_subject_predicate(),
);
}
fn record_session_metric(
operation: AuthMetricOperation,
outcome: AuthMetricOutcome,
reason: AuthMetricReason,
predicate: &'static str,
) {
AuthMetrics::record(AuthMetricSurface::Session, operation, outcome, reason);
AccessMetrics::increment(auth_session_endpoint(), AccessMetricKind::Auth, predicate);
}