forked from kemitix/git-next
86 lines
2.7 KiB
Rust
86 lines
2.7 KiB
Rust
//
|
|
|
|
use crate::repo::messages::NotifyUser;
|
|
|
|
use git_next_core::git::UserNotification;
|
|
|
|
use serde_json::json;
|
|
|
|
impl NotifyUser {
|
|
pub fn as_json(&self, timestamp: time::OffsetDateTime) -> serde_json::Value {
|
|
let timestamp = timestamp.unix_timestamp().to_string();
|
|
match &**self {
|
|
UserNotification::CICheckFailed {
|
|
forge_alias,
|
|
repo_alias,
|
|
commit,
|
|
} => json!({
|
|
"type": "cicheck.failed",
|
|
"timestamp": timestamp,
|
|
"data": {
|
|
"forge_alias": forge_alias,
|
|
"repo_alias": repo_alias,
|
|
"commit": {
|
|
"sha": commit.sha(),
|
|
"message": commit.message()
|
|
}
|
|
}
|
|
}),
|
|
UserNotification::RepoConfigLoadFailure {
|
|
forge_alias,
|
|
repo_alias,
|
|
reason,
|
|
} => json!({
|
|
"type": "config.load.failed",
|
|
"timestamp": timestamp,
|
|
"data": {
|
|
"forge_alias": forge_alias,
|
|
"repo_alias": repo_alias,
|
|
"reason": reason
|
|
}
|
|
}),
|
|
UserNotification::WebhookRegistration {
|
|
forge_alias,
|
|
repo_alias,
|
|
reason,
|
|
} => json!({
|
|
"type": "webhook.registration.failed",
|
|
"timestamp": timestamp,
|
|
"data": {
|
|
"forge_alias": forge_alias,
|
|
"repo_alias": repo_alias,
|
|
"reason": reason
|
|
}
|
|
}),
|
|
UserNotification::DevNotBasedOnMain {
|
|
forge_alias,
|
|
repo_alias,
|
|
dev_branch,
|
|
main_branch,
|
|
dev_commit,
|
|
main_commit,
|
|
} => json!({
|
|
"type": "branch.dev.not-on-main",
|
|
"timestamp": timestamp,
|
|
"data": {
|
|
"forge_alias": forge_alias,
|
|
"repo_alias": repo_alias,
|
|
"branches": {
|
|
"dev": dev_branch,
|
|
"main": main_branch
|
|
},
|
|
"commits": {
|
|
"dev": {
|
|
"sha": dev_commit.sha(),
|
|
"message": dev_commit.message()
|
|
},
|
|
"main": {
|
|
"sha": main_commit.sha(),
|
|
"message": main_commit.message()
|
|
}
|
|
}
|
|
}
|
|
}),
|
|
}
|
|
}
|
|
}
|