Compare commits

...
6 changed files with 28 additions and 4 deletions

View file

@ -20,7 +20,7 @@ pretty_env_logger = "0.5"
serde = { version = "1.0", features = [ "derive" ] }
serde_json = "1.0"
toml = "1.1"
xmpp = { git = "https://code.bouah.net/pep/xmpp-rs", rev = "559159d4", default-features = false, features = [ "serde", "starttls", "rustls-native-certs", "aws_lc_rs" ] }
xmpp = { git = "https://kl.netlib.re/forge/xmppftw/xmpp-rs", branch = "feat-openssl-vendored", default-features = false, features = [ "serde", "starttls", "rustls-native-certs", "aws_lc_rs" ] }
hmac = "0.13"
sha2 = "0.11"
hex = "0.4"
@ -36,3 +36,4 @@ forgejo-hooks = { path = "forgejo-hooks" }
[features]
gitlab = [ "dep:gitlab" ]
syntax-highlighting = ["xmpp/syntax-highlighting"]
vendored-openssl = [ "xmpp/vendored-openssl", "git2/vendored-openssl" ]

View file

@ -7,6 +7,12 @@ be somewhat of a testbed for xmpp-rs features.
Originally based on tokio-webhook2muc.
# Cross-compile musl
```
cross build --release --target x86_64-unknown-linux-musl --features vendored-openssl
```
## License
AGPL-3.0-or-later. See the LICENSE file.

8
config.sample.toml Normal file
View file

@ -0,0 +1,8 @@
admins = [ "foo@localhost" ]
jid = "bar@localhost"
password = "bonjourxmpp"
rooms = [ "room@muc.localhost" ]
secret = "bonjourforgejo"
addr = "[::1]:5225"

View file

@ -77,6 +77,7 @@ impl From<FjIssue> for Note {
.comment
.map(|c| c.html_url)
.unwrap_or(other.issue.html_url),
is_update: other.action == FjIssueAction::Edited,
}
}
}

View file

@ -109,19 +109,26 @@ pub fn format_hook(hook: &Hook) -> Option<String> {
if note.snippet {
return None;
}
let updated_fmt = if note.is_update {
"updated comment"
} else {
"commented"
};
if let Some(commit) = &note.commit {
format!(
"[{}] {} commented on commit {:?} <{}>",
"[{}] {} {updated_fmt} on commit {:?} <{}>",
note.repository.name, note.author.name, commit.ref_, commit.url,
)
} else if let Some(issue) = &note.issue {
format!(
"[{}] {} commented on issue {}: {} <{}>",
"[{}] {} {updated_fmt} on issue {}: {} <{}>",
note.repository.name, note.author.name, issue.id, issue.title, note.url,
)
} else if let Some(mr) = &note.merge_request {
format!(
"[{}] {} commented on merge request {}: {} <{}>",
"[{}] {} {updated_fmt} on merge request {}: {} <{}>",
note.repository.name, note.author.name, mr.id, mr.title, note.url,
)
} else {

View file

@ -116,6 +116,7 @@ pub struct Note {
pub repository: Repository,
pub author: User,
pub url: String,
pub is_update: bool,
}
#[derive(Debug, Clone, PartialEq)]