Split hook modules

Some structs changed to public on the way to facilitate writes.

Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
This commit is contained in:
Maxime “pep” Buquet 2024-08-31 22:41:26 +02:00 committed by pep
commit 4bbb3f8994
5 changed files with 347 additions and 289 deletions

48
src/hooks/forgejo.rs Normal file
View file

@ -0,0 +1,48 @@
// Copyright (C) 2024-2099 The crate authors.
//
// This program is free software: you can redistribute it and/or modify it
// under the terms of the GNU Affero General Public License as published by the
// Free Software Foundation, either version 3 of the License, or (at your
// option) any later version.
//
// This program is distributed in the hope that it will be useful, but WITHOUT
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License
// for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
use crate::hooks::types::{Commit, Hook, Push, Repository, User};
use crate::Error;
pub use ::forgejo_hooks::Hook as ForgejoHook;
impl TryFrom<ForgejoHook> for Hook {
type Error = Error;
fn try_from(hook: ForgejoHook) -> Result<Hook, Error> {
Ok(match hook {
ForgejoHook::Push(push) => Hook::Push(Push {
ref_: push.ref_,
object_kind: String::from("push"),
commits: push
.commits
.into_iter()
.map(|commit| Commit {
ref_: commit.id,
message: commit.message,
url: commit.url,
})
.collect(),
repository: Repository {
name: push.repository.name,
},
pusher: User {
name: push.pusher.login,
},
}),
_ => return Err(Error::UnsupportedHookConversion),
})
}
}