use inflector::Inflector;
use std::convert::AsRef;
#[derive(
AsRefStr,
Copy,
Clone,
Eq,
PartialEq,
EnumString,
EnumIter,
Debug,
Ord,
PartialOrd,
Hash,
Serialize,
Deserialize,
)]
#[strum(serialize_all = "camelCase")]
pub enum ResourceIdentity {
AccessPackages,
AccessPackageAssignmentApprovals,
AccessReviews,
AccessReviewDefinitions,
Activities,
Admin,
AdministrativeUnits,
AdministrativeUnitsMembers,
AgreementAcceptances,
Agreements,
AppConsent,
AssignmentPolicies,
AssignmentRequests,
Assignments,
AllChannels,
AppCatalogs,
Application,
ApplicationTemplates,
Applications,
Attachments,
AuditLogs,
AuthenticationMethodConfigurations,
AuthenticationMethodsPolicy,
Buckets,
Branding,
Calendar,
CalendarGroup,
CalendarGroups,
CalendarView,
CalendarViews,
Calendars,
CallRecord,
CallRecords,
Calls,
CertificateBasedAuthConfiguration,
Channels,
Chats,
ChatsAndChannelsMessages,
ChildFolders,
Communications,
Compliance,
ConnectedOrganizations,
Connections,
ContactFolders,
Contacts,
ContentTypes,
Contracts,
Conversations,
DataPolicyOperations,
DefinitionInstances,
DefinitionInstanceStages,
DeviceAppManagement,
DeviceManagement,
Devices,
Directory,
DirectoryDeletedItems,
DirectoryObjects,
DirectoryRoleTemplates,
DirectoryRoles,
DomainDnsRecords,
Domains,
Drive,
Drives,
Education,
EntitlementManagement,
Event,
Events,
External,
ExtendedProperties,
GroupLifecyclePolicies,
GroupSettingTemplates,
GroupSettings,
Groups,
HealthOverviews,
HistoryItems,
Identity,
IdentityGovernance,
IdentityProtection,
IdentityProviders,
IncomingChannels,
InferenceClassification,
InformationProtection,
Insights,
Instances,
Invitations,
Items,
List,
Lists,
Localizations,
MailFolders,
ManagedDevices,
Me,
Members,
Messages,
Notebooks,
Oauth2PermissionGrants,
Onenote,
OnlineMeetings,
OrgContact,
Organization,
Outlook,
Pages,
ParentNotebook,
ParentSection,
ParentSectionGroup,
PermissionGrants,
Places,
Planner,
Plans,
Policies,
Posts,
PrimaryChannel,
Print,
Privacy,
Reports,
RoleManagement,
Schedule,
ScopedRoleMemberships,
SchemaExtensions,
Search,
SectionGroups,
Sections,
Security,
ServiceAnnouncement,
ServicePrincipals,
Sessions,
Settings,
SharedWithTeams,
Shares,
Sites,
Solutions,
SubscribedSkus,
Subscriptions,
Tabs,
Tasks,
Teams,
TeamsTemplates,
Teamwork,
TermsOfUse,
Threads,
Users,
Workbooks,
}
impl ToString for ResourceIdentity {
fn to_string(&self) -> String {
self.as_ref().to_camel_case()
}
}
impl Default for ResourceIdentity {
fn default() -> Self {
ResourceIdentity::Me
}
}
impl ResourceIdentity {
pub fn enum_string(&self) -> String {
format!("ResourceIdentity::{:#?}", self)
}
pub fn to_path_start(&self) -> String {
format!("/{}", self.to_string().to_camel_case())
}
}
#[derive(
AsRefStr,
Copy,
Clone,
Eq,
PartialEq,
EnumString,
EnumIter,
Debug,
Ord,
PartialOrd,
Hash,
Serialize,
Deserialize,
)]
#[strum(serialize_all = "camelCase")]
pub enum TopLevelResource {
Admin,
AgreementAcceptances,
Agreements,
AppCatalogs,
ApplicationTemplates,
Applications,
AuditLogs,
AuthenticationMethodConfigurations,
AuthenticationMethodsPolicy,
Branding,
CertificateBasedAuthConfiguration,
Chats,
Communications,
Compliance,
Connections,
Contacts,
Contracts,
DataPolicyOperations,
DeviceAppManagement,
DeviceManagement,
Devices,
Directory,
DirectoryObjects,
DirectoryRoleTemplates,
DirectoryRoles,
DomainDnsRecords,
Domains,
Drive,
Drives,
Education,
External,
GroupLifecyclePolicies,
GroupSettingTemplates,
GroupSettings,
Groups,
Identity,
IdentityGovernance,
IdentityProtection,
IdentityProviders,
InformationProtection,
Invitations,
Localizations,
Me,
Oauth2PermissionGrants,
Organization,
PermissionGrants,
Places,
Planner,
Policies,
Print,
Privacy,
Reports,
RoleManagement,
SchemaExtensions,
ScopedRoleMemberships,
Search,
Security,
ServicePrincipals,
Shares,
Sites,
Solutions,
SubscribedSkus,
Subscriptions,
Teams,
TeamsTemplates,
Teamwork,
Users,
Workbooks,
}
impl ToString for TopLevelResource {
fn to_string(&self) -> String {
self.as_ref().to_camel_case()
}
}
impl Default for TopLevelResource {
fn default() -> Self {
TopLevelResource::Me
}
}