use std::{fmt::Debug, sync::Arc};
use oxinat_derive::uri_builder_alias;
use crate::{UriBuilder, Version};
uri_builder_alias!(PluginAdminUriBuilder);
ImplPluginAdminUriBuilder! {
(String),
}
#[derive(Clone, Debug, Default, UriBuilder)]
#[match_path(path = "{parent}/plugins")]
#[match_path(path = "{parent}/plugins/{plugin}")]
pub struct PluginsUriBuilder<Parent>
where
Parent: PluginAdminUriBuilder,
{
#[param]
plugin: Option<String>,
#[parent]
parent: Option<Arc<Parent>>,
}
pub trait PluginUri: Version {
#[inline]
fn plugins(&self) -> PluginsUriBuilder<String> {
PluginsUriBuilder::from_parent(self.root_uri().into())
}
#[inline]
fn plugin_settings(&self) -> crate::BuildResult {
self.root_uri().build_join("pluginOpenUrls/settings")
}
}