feat: remove notification.type
All checks were successful
Rust / build (push) Successful in 1m40s
ci/woodpecker/push/cron-docker-builder Pipeline was successful
ci/woodpecker/push/push-next Pipeline was successful
ci/woodpecker/push/tag-created Pipeline was successful
ci/woodpecker/cron/cron-docker-builder Pipeline was successful
ci/woodpecker/cron/push-next Pipeline was successful
ci/woodpecker/cron/tag-created Pipeline was successful
All checks were successful
Rust / build (push) Successful in 1m40s
ci/woodpecker/push/cron-docker-builder Pipeline was successful
ci/woodpecker/push/push-next Pipeline was successful
ci/woodpecker/push/tag-created Pipeline was successful
ci/woodpecker/cron/cron-docker-builder Pipeline was successful
ci/woodpecker/cron/push-next Pipeline was successful
ci/woodpecker/cron/tag-created Pipeline was successful
This makes it easier to specify multiple types of notifications, rather than a single type.
This commit is contained in:
parent
7b64e300b6
commit
8df7600053
3 changed files with 5 additions and 40 deletions
|
@ -7,7 +7,7 @@ use tracing::Instrument;
|
||||||
|
|
||||||
use crate::{repo::messages::NotifyUser, server::actor::ServerActor};
|
use crate::{repo::messages::NotifyUser, server::actor::ServerActor};
|
||||||
|
|
||||||
use git_next_core::server::{self, Notification, NotificationType};
|
use git_next_core::server::{self, OutboundWebhook};
|
||||||
|
|
||||||
impl Handler<NotifyUser> for ServerActor {
|
impl Handler<NotifyUser> for ServerActor {
|
||||||
type Result = ();
|
type Result = ();
|
||||||
|
@ -19,9 +19,8 @@ impl Handler<NotifyUser> for ServerActor {
|
||||||
let notification_config = server_config.notification().clone();
|
let notification_config = server_config.notification().clone();
|
||||||
let net = self.net.clone();
|
let net = self.net.clone();
|
||||||
async move {
|
async move {
|
||||||
match notification_config.r#type() {
|
if let Some(webhook_config) = notification_config.webhook() {
|
||||||
NotificationType::None => { /* do nothing */ }
|
send_webhook(msg, webhook_config, net).await;
|
||||||
NotificationType::Webhook => send_webhook(msg, notification_config, net).await,
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.in_current_span()
|
.in_current_span()
|
||||||
|
@ -32,13 +31,9 @@ impl Handler<NotifyUser> for ServerActor {
|
||||||
|
|
||||||
async fn send_webhook(
|
async fn send_webhook(
|
||||||
msg: NotifyUser,
|
msg: NotifyUser,
|
||||||
notification_config: Notification,
|
webhook_config: &OutboundWebhook,
|
||||||
net: kxio::network::Network,
|
net: kxio::network::Network,
|
||||||
) {
|
) {
|
||||||
let Some(webhook_config) = notification_config.webhook() else {
|
|
||||||
tracing::warn!("Invalid notification configuration (config) - can't sent notification");
|
|
||||||
return;
|
|
||||||
};
|
|
||||||
let Ok(webhook) =
|
let Ok(webhook) =
|
||||||
Webhook::from_bytes(webhook_config.secret().expose_secret().as_bytes().into())
|
Webhook::from_bytes(webhook_config.secret().expose_secret().as_bytes().into())
|
||||||
else {
|
else {
|
||||||
|
|
|
@ -6,8 +6,6 @@ port = 8080
|
||||||
url = "https://localhost:8080" # don't include any query path or a trailing slash
|
url = "https://localhost:8080" # don't include any query path or a trailing slash
|
||||||
|
|
||||||
[notification] # where updates from git-next should be sent to alert the user
|
[notification] # where updates from git-next should be sent to alert the user
|
||||||
type = "None"
|
|
||||||
# type = "Webhook"
|
|
||||||
# webhook = { url = "https//localhost:9090", secret = "secret-password" }
|
# webhook = { url = "https//localhost:9090", secret = "secret-password" }
|
||||||
|
|
||||||
[storage] # where local copies of repositories will be cloned (bare) into
|
[storage] # where local copies of repositories will be cloned (bare) into
|
||||||
|
|
|
@ -159,25 +159,6 @@ impl ServerStorage {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Identifier for the type of Notification
|
|
||||||
#[derive(
|
|
||||||
Clone,
|
|
||||||
Default,
|
|
||||||
Debug,
|
|
||||||
derive_more::From,
|
|
||||||
PartialEq,
|
|
||||||
Eq,
|
|
||||||
PartialOrd,
|
|
||||||
Ord,
|
|
||||||
serde::Deserialize,
|
|
||||||
Copy,
|
|
||||||
)]
|
|
||||||
pub enum NotificationType {
|
|
||||||
#[default]
|
|
||||||
None,
|
|
||||||
Webhook,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Defines the Webhook Forges should send updates to
|
/// Defines the Webhook Forges should send updates to
|
||||||
/// Must be an address that is accessible from the remote forge
|
/// Must be an address that is accessible from the remote forge
|
||||||
#[derive(
|
#[derive(
|
||||||
|
@ -192,27 +173,18 @@ pub enum NotificationType {
|
||||||
serde::Deserialize,
|
serde::Deserialize,
|
||||||
)]
|
)]
|
||||||
pub struct Notification {
|
pub struct Notification {
|
||||||
r#type: NotificationType,
|
|
||||||
webhook: Option<OutboundWebhook>,
|
webhook: Option<OutboundWebhook>,
|
||||||
}
|
}
|
||||||
impl Notification {
|
impl Notification {
|
||||||
pub const fn none() -> Self {
|
pub const fn none() -> Self {
|
||||||
Self {
|
Self { webhook: None }
|
||||||
r#type: NotificationType::None,
|
|
||||||
webhook: None,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
pub const fn new_webhook(webhook: OutboundWebhook) -> Self {
|
pub const fn new_webhook(webhook: OutboundWebhook) -> Self {
|
||||||
Self {
|
Self {
|
||||||
r#type: NotificationType::Webhook,
|
|
||||||
webhook: Some(webhook),
|
webhook: Some(webhook),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub const fn r#type(&self) -> NotificationType {
|
|
||||||
self.r#type
|
|
||||||
}
|
|
||||||
|
|
||||||
pub const fn webhook(&self) -> Option<&OutboundWebhook> {
|
pub const fn webhook(&self) -> Option<&OutboundWebhook> {
|
||||||
self.webhook.as_ref()
|
self.webhook.as_ref()
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue