From 3ca037411a6bae519503bc0789fde3ffd980a42a Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Fri, 18 Oct 2024 20:27:57 -0400 Subject: [PATCH] Add more new fields for webhook payload. --- example_tag_webhook_payload.json | 165 ------------------ ...webhook_payload.json => local_payload.json | 63 ++++--- src/bin_local_trigger.rs | 2 +- src/hook_push.rs | 4 + 4 files changed, 44 insertions(+), 190 deletions(-) delete mode 100644 example_tag_webhook_payload.json rename example_webhook_payload.json => local_payload.json (73%) diff --git a/example_tag_webhook_payload.json b/example_tag_webhook_payload.json deleted file mode 100644 index 8d2cf90..0000000 --- a/example_tag_webhook_payload.json +++ /dev/null @@ -1,165 +0,0 @@ -{ - "ref": "refs/tags/v0.0.2", - "before": "0000000000000000000000000000000000000000", - "after": "84fe1ec23ae242cb1bbccbc2ab999c3082f54d45", - "compare_url": "https://code.fizz.buzz/talexander/webhook_bridge/compare/0000000000000000000000000000000000000000...84fe1ec23ae242cb1bbccbc2ab999c3082f54d45", - "commits": [], - "total_commits": 0, - "head_commit": { - "id": "84fe1ec23ae242cb1bbccbc2ab999c3082f54d45", - "message": "Add a pipeline to build the server image.\n", - "url": "https://code.fizz.buzz/talexander/webhook_bridge/commit/84fe1ec23ae242cb1bbccbc2ab999c3082f54d45", - "author": { - "name": "Tom Alexander", - "email": "tom@fizz.buzz", - "username": "" - }, - "committer": { - "name": "Tom Alexander", - "email": "tom@fizz.buzz", - "username": "" - }, - "verification": null, - "timestamp": "2024-09-29T00:19:22-04:00", - "added": [ - ".webhook_bridge/pipeline-build.yaml" - ], - "removed": [], - "modified": [ - ".webhook_bridge/webhook_bridge.toml" - ] - }, - "repository": { - "id": 21, - "owner": { - "id": 1, - "login": "talexander", - "login_name": "", - "full_name": "", - "email": "gitea@local.domain", - "avatar_url": "https://code.fizz.buzz/avatars/9d402a89b5a0786f83c1b8c5486fc7ff3d083a54fe20e55c0a776a1932c30289", - "language": "", - "is_admin": false, - "last_login": "0001-01-01T00:00:00Z", - "created": "2023-07-05T22:03:28Z", - "restricted": false, - "active": false, - "prohibit_login": false, - "location": "", - "website": "", - "description": "", - "visibility": "public", - "followers_count": 0, - "following_count": 0, - "starred_repos_count": 0, - "username": "talexander" - }, - "name": "webhook_bridge", - "full_name": "talexander/webhook_bridge", - "description": "A server that receives webhooks from gitea and fires off Tekton jobs in response.", - "empty": false, - "private": false, - "fork": false, - "template": false, - "parent": null, - "mirror": false, - "size": 346, - "language": "", - "languages_url": "https://code.fizz.buzz/api/v1/repos/talexander/webhook_bridge/languages", - "html_url": "https://code.fizz.buzz/talexander/webhook_bridge", - "url": "https://code.fizz.buzz/api/v1/repos/talexander/webhook_bridge", - "link": "", - "ssh_url": "git@code.fizz.buzz:talexander/webhook_bridge.git", - "clone_url": "https://code.fizz.buzz/talexander/webhook_bridge.git", - "original_url": "", - "website": "", - "stars_count": 0, - "forks_count": 0, - "watchers_count": 1, - "open_issues_count": 0, - "open_pr_counter": 0, - "release_counter": 0, - "default_branch": "main", - "archived": false, - "created_at": "2024-07-14T18:48:52Z", - "updated_at": "2024-09-29T04:25:36Z", - "archived_at": "1970-01-01T00:00:00Z", - "permissions": { - "admin": true, - "push": true, - "pull": true - }, - "has_issues": true, - "internal_tracker": { - "enable_time_tracker": true, - "allow_only_contributors_to_track_time": true, - "enable_issue_dependencies": true - }, - "has_wiki": true, - "has_pull_requests": true, - "has_projects": true, - "has_releases": true, - "has_packages": true, - "has_actions": false, - "ignore_whitespace_conflicts": false, - "allow_merge_commits": true, - "allow_rebase": true, - "allow_rebase_explicit": true, - "allow_squash_merge": true, - "allow_rebase_update": true, - "default_delete_branch_after_merge": false, - "default_merge_style": "merge", - "default_allow_maintainer_edit": false, - "avatar_url": "", - "internal": false, - "mirror_interval": "", - "mirror_updated": "0001-01-01T00:00:00Z", - "repo_transfer": null - }, - "pusher": { - "id": 2, - "login": "build-bot", - "login_name": "", - "full_name": "", - "email": "build-bot@noreply.code.fizz.buzz", - "avatar_url": "https://secure.gravatar.com/avatar/e39ef2faba8a3dfb3dcb4d8275a532d4?d=identicon", - "language": "", - "is_admin": false, - "last_login": "0001-01-01T00:00:00Z", - "created": "2023-07-09T04:25:44Z", - "restricted": false, - "active": false, - "prohibit_login": false, - "location": "", - "website": "", - "description": "", - "visibility": "private", - "followers_count": 0, - "following_count": 0, - "starred_repos_count": 0, - "username": "build-bot" - }, - "sender": { - "id": 2, - "login": "build-bot", - "login_name": "", - "full_name": "", - "email": "build-bot@noreply.code.fizz.buzz", - "avatar_url": "https://secure.gravatar.com/avatar/e39ef2faba8a3dfb3dcb4d8275a532d4?d=identicon", - "language": "", - "is_admin": false, - "last_login": "0001-01-01T00:00:00Z", - "created": "2023-07-09T04:25:44Z", - "restricted": false, - "active": false, - "prohibit_login": false, - "location": "", - "website": "", - "description": "", - "visibility": "private", - "followers_count": 0, - "following_count": 0, - "starred_repos_count": 0, - "username": "build-bot" - } -} diff --git a/example_webhook_payload.json b/local_payload.json similarity index 73% rename from example_webhook_payload.json rename to local_payload.json index f502ee8..7a8e816 100644 --- a/example_webhook_payload.json +++ b/local_payload.json @@ -1,13 +1,13 @@ { "ref": "refs/heads/main", - "before": "a2aca6d2f1c85b5d4bef1349230fdaef1683622d", - "after": "84fe1ec23ae242cb1bbccbc2ab999c3082f54d45", - "compare_url": "https://code.fizz.buzz/talexander/webhook_bridge/compare/a2aca6d2f1c85b5d4bef1349230fdaef1683622d...84fe1ec23ae242cb1bbccbc2ab999c3082f54d45", + "before": "f3b00c46ea57d5314063ad6fbfcaf9e38712cafe", + "after": "e991b259f2bdf3f24a2cba309a93d81f32ab7f50", + "compare_url": "https://code.fizz.buzz/talexander/webhook_bridge/compare/f3b00c46ea57d5314063ad6fbfcaf9e38712cafe...e991b259f2bdf3f24a2cba309a93d81f32ab7f50", "commits": [ { - "id": "84fe1ec23ae242cb1bbccbc2ab999c3082f54d45", - "message": "Add a pipeline to build the server image.\n", - "url": "https://code.fizz.buzz/talexander/webhook_bridge/commit/84fe1ec23ae242cb1bbccbc2ab999c3082f54d45", + "id": "e991b259f2bdf3f24a2cba309a93d81f32ab7f50", + "message": "Add source_id to HookUser.\n\nThis must be a new field that gitea added in an update.\n", + "url": "https://code.fizz.buzz/talexander/webhook_bridge/commit/e991b259f2bdf3f24a2cba309a93d81f32ab7f50", "author": { "name": "Tom Alexander", "email": "tom@fizz.buzz", @@ -19,21 +19,24 @@ "username": "" }, "verification": null, - "timestamp": "2024-09-29T00:19:22-04:00", - "added": [ - ".webhook_bridge/pipeline-build.yaml" - ], + "timestamp": "2024-10-18T19:41:56-04:00", + "added": [], "removed": [], "modified": [ - ".webhook_bridge/webhook_bridge.toml" + ".webhook_bridge/pipeline-build-semver.yaml", + ".webhook_bridge/pipeline-format.yaml", + ".webhook_bridge/pipeline-rust-clippy.yaml", + ".webhook_bridge/pipeline-rust-test.yaml", + ".webhook_bridge/pipeline-semver.yaml", + "src/hook_push.rs" ] } ], "total_commits": 1, "head_commit": { - "id": "84fe1ec23ae242cb1bbccbc2ab999c3082f54d45", - "message": "Add a pipeline to build the server image.\n", - "url": "https://code.fizz.buzz/talexander/webhook_bridge/commit/84fe1ec23ae242cb1bbccbc2ab999c3082f54d45", + "id": "e991b259f2bdf3f24a2cba309a93d81f32ab7f50", + "message": "Add source_id to HookUser.\n\nThis must be a new field that gitea added in an update.\n", + "url": "https://code.fizz.buzz/talexander/webhook_bridge/commit/e991b259f2bdf3f24a2cba309a93d81f32ab7f50", "author": { "name": "Tom Alexander", "email": "tom@fizz.buzz", @@ -45,13 +48,16 @@ "username": "" }, "verification": null, - "timestamp": "2024-09-29T00:19:22-04:00", - "added": [ - ".webhook_bridge/pipeline-build.yaml" - ], + "timestamp": "2024-10-18T19:41:56-04:00", + "added": [], "removed": [], "modified": [ - ".webhook_bridge/webhook_bridge.toml" + ".webhook_bridge/pipeline-build-semver.yaml", + ".webhook_bridge/pipeline-format.yaml", + ".webhook_bridge/pipeline-rust-clippy.yaml", + ".webhook_bridge/pipeline-rust-test.yaml", + ".webhook_bridge/pipeline-semver.yaml", + "src/hook_push.rs" ] }, "repository": { @@ -60,9 +66,11 @@ "id": 1, "login": "talexander", "login_name": "", + "source_id": 0, "full_name": "", "email": "gitea@local.domain", "avatar_url": "https://code.fizz.buzz/avatars/9d402a89b5a0786f83c1b8c5486fc7ff3d083a54fe20e55c0a776a1932c30289", + "html_url": "https://code.fizz.buzz/talexander", "language": "", "is_admin": false, "last_login": "0001-01-01T00:00:00Z", @@ -88,7 +96,7 @@ "template": false, "parent": null, "mirror": false, - "size": 343, + "size": 151, "language": "", "languages_url": "https://code.fizz.buzz/api/v1/repos/talexander/webhook_bridge/languages", "html_url": "https://code.fizz.buzz/talexander/webhook_bridge", @@ -107,7 +115,7 @@ "default_branch": "main", "archived": false, "created_at": "2024-07-14T18:48:52Z", - "updated_at": "2024-09-29T04:14:47Z", + "updated_at": "2024-09-30T04:41:20Z", "archived_at": "1970-01-01T00:00:00Z", "permissions": { "admin": true, @@ -120,17 +128,19 @@ "allow_only_contributors_to_track_time": true, "enable_issue_dependencies": true }, - "has_wiki": true, + "has_wiki": false, "has_pull_requests": true, - "has_projects": true, + "has_projects": false, + "projects_mode": "all", "has_releases": true, - "has_packages": true, + "has_packages": false, "has_actions": false, "ignore_whitespace_conflicts": false, "allow_merge_commits": true, "allow_rebase": true, "allow_rebase_explicit": true, "allow_squash_merge": true, + "allow_fast_forward_only_merge": false, "allow_rebase_update": true, "default_delete_branch_after_merge": false, "default_merge_style": "merge", @@ -138,6 +148,7 @@ "avatar_url": "", "internal": false, "mirror_interval": "", + "object_format_name": "sha1", "mirror_updated": "0001-01-01T00:00:00Z", "repo_transfer": null }, @@ -145,9 +156,11 @@ "id": 1, "login": "talexander", "login_name": "", + "source_id": 0, "full_name": "", "email": "talexander@noreply.code.fizz.buzz", "avatar_url": "https://code.fizz.buzz/avatars/9d402a89b5a0786f83c1b8c5486fc7ff3d083a54fe20e55c0a776a1932c30289", + "html_url": "https://code.fizz.buzz/talexander", "language": "", "is_admin": false, "last_login": "0001-01-01T00:00:00Z", @@ -168,9 +181,11 @@ "id": 1, "login": "talexander", "login_name": "", + "source_id": 0, "full_name": "", "email": "talexander@noreply.code.fizz.buzz", "avatar_url": "https://code.fizz.buzz/avatars/9d402a89b5a0786f83c1b8c5486fc7ff3d083a54fe20e55c0a776a1932c30289", + "html_url": "https://code.fizz.buzz/talexander", "language": "", "is_admin": false, "last_login": "0001-01-01T00:00:00Z", diff --git a/src/bin_local_trigger.rs b/src/bin_local_trigger.rs index fd58345..ad73fa2 100644 --- a/src/bin_local_trigger.rs +++ b/src/bin_local_trigger.rs @@ -2,7 +2,7 @@ use webhookbridge::init_tracing; use webhookbridge::local_trigger; -const EXAMPLE_WEBHOOK_PAYLOAD: &str = include_str!("../example_tag_webhook_payload.json"); +const EXAMPLE_WEBHOOK_PAYLOAD: &str = include_str!("../local_payload.json"); #[tokio::main] #[allow(clippy::needless_return)] diff --git a/src/hook_push.rs b/src/hook_push.rs index 1632104..f2037ce 100644 --- a/src/hook_push.rs +++ b/src/hook_push.rs @@ -33,6 +33,7 @@ pub(crate) struct HookUser { full_name: String, email: String, avatar_url: String, + html_url: String, language: String, is_admin: bool, last_login: String, // TODO: parse to datetime @@ -92,6 +93,7 @@ pub(crate) struct HookRepository { has_wiki: bool, has_pull_requests: bool, has_projects: bool, + projects_mode: String, has_releases: bool, has_packages: bool, has_actions: bool, @@ -100,6 +102,7 @@ pub(crate) struct HookRepository { allow_rebase: bool, allow_rebase_explicit: bool, allow_squash_merge: bool, + allow_fast_forward_only_merge: bool, allow_rebase_update: bool, default_delete_branch_after_merge: bool, default_merge_style: String, @@ -107,6 +110,7 @@ pub(crate) struct HookRepository { avatar_url: String, internal: bool, mirror_interval: String, + object_format_name: String, mirror_updated: String, // TODO: parse to datetime repo_transfer: Value, // Was null in test hook }