1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Serialize, Deserialize)]
5#[serde(rename_all = "snake_case")]
6pub enum ProviderEvidenceSensitivity {
7 Public,
9 #[default]
12 Hashed,
13 Secret,
15}
16
17#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
22pub enum ProviderEvidenceRole {
23 Account,
25 AccountId,
27 Active,
29 BotName,
31 ChannelId,
33 Company,
35 Data,
37 Email,
39 FriendlyName,
41 Id,
43 Login,
45 Name,
47 Organization,
49 Permissions,
51 Plan,
53 Project,
55 Region,
57 Resource,
59 Results,
61 Scope,
63 SeatCount,
65 Status,
67 StoreName,
69 Team,
71 TeamId,
73 Total,
75 User,
77 UserId,
79 UserPrincipalName,
81 Username,
83 Uuid,
85 WorkplaceName,
87}
88
89impl ProviderEvidenceRole {
90 pub fn from_metadata_name(name: &str) -> Option<Self> {
92 Some(match name {
93 "account" => Self::Account,
94 "account_id" | "accountID" => Self::AccountId,
95 "active" => Self::Active,
96 "bot_name" => Self::BotName,
97 "channel_id" => Self::ChannelId,
98 "company" => Self::Company,
99 "data" => Self::Data,
100 "email" => Self::Email,
101 "friendly_name" => Self::FriendlyName,
102 "id" => Self::Id,
103 "login" => Self::Login,
104 "name" => Self::Name,
105 "organization" => Self::Organization,
106 "permissions" => Self::Permissions,
107 "plan" => Self::Plan,
108 "project" => Self::Project,
109 "region" => Self::Region,
110 "resource" => Self::Resource,
111 "results" => Self::Results,
112 "scope" => Self::Scope,
113 "seat_count" | "seats" => Self::SeatCount,
114 "status" => Self::Status,
115 "store_name" => Self::StoreName,
116 "team" => Self::Team,
117 "team_id" | "teamId" => Self::TeamId,
118 "total" => Self::Total,
119 "user" => Self::User,
120 "user_id" => Self::UserId,
121 "user_principal_name" | "userPrincipalName" => Self::UserPrincipalName,
122 "username" => Self::Username,
123 "uuid" => Self::Uuid,
124 "workplace_name" => Self::WorkplaceName,
125 _ => return None,
126 })
127 }
128
129 pub const fn as_str(self) -> &'static str {
131 match self {
132 Self::Account => "account",
133 Self::AccountId => "account_id",
134 Self::Active => "active",
135 Self::BotName => "bot_name",
136 Self::ChannelId => "channel_id",
137 Self::Company => "company",
138 Self::Data => "data",
139 Self::Email => "email",
140 Self::FriendlyName => "friendly_name",
141 Self::Id => "id",
142 Self::Login => "login",
143 Self::Name => "name",
144 Self::Organization => "organization",
145 Self::Permissions => "permissions",
146 Self::Plan => "plan",
147 Self::Project => "project",
148 Self::Region => "region",
149 Self::Resource => "resource",
150 Self::Results => "results",
151 Self::Scope => "scope",
152 Self::SeatCount => "seat_count",
153 Self::Status => "status",
154 Self::StoreName => "store_name",
155 Self::Team => "team",
156 Self::TeamId => "team_id",
157 Self::Total => "total",
158 Self::User => "user",
159 Self::UserId => "user_id",
160 Self::UserPrincipalName => "user_principal_name",
161 Self::Username => "username",
162 Self::Uuid => "uuid",
163 Self::WorkplaceName => "workplace_name",
164 }
165 }
166}