From 1eec851e16890aed1557f3527fccc4e9b8a3a4aaebb80ddd6fdb6ddcf5af4606 Mon Sep 17 00:00:00 2001 From: Adam Majer Date: Sat, 24 Aug 2024 16:46:57 +0200 Subject: [PATCH] . --- bots-common/conststring_test.go | 408 ++++++++++++++++++++ gitea-events-rabbitmq-publisher/main.go | 24 +- gitea-events-rabbitmq-publisher/rabbitmq.go | 2 +- 3 files changed, 432 insertions(+), 2 deletions(-) diff --git a/bots-common/conststring_test.go b/bots-common/conststring_test.go index 8cb69e6..a9ef061 100644 --- a/bots-common/conststring_test.go +++ b/bots-common/conststring_test.go @@ -431,3 +431,411 @@ const repoCreateJSON = `{ } }` + +const createBranchJSON = `{ + "sha": "691c91e5240f24f5a75393caf8a78826b8a6f9f272ab4faef024102739f0060a", + "ref": "main", + "ref_type": "branch", + "repository": { + "id": 90992, + "owner": { + "id": 939, + "login": "importtest", + "login_name": "", + "source_id": 0, + "full_name": "", + "email": "importtest@noreply@src.opensuse.org", + "avatar_url": "https://src.opensuse.org/avatars/10dc780b6dc535d772efc579e47b5acd", + "html_url": "https://src.opensuse.org/importtest", + "language": "", + "is_admin": false, + "last_login": "0001-01-01T00:00:00Z", + "created": "2024-03-07T13:35:42+01:00", + "restricted": false, + "active": false, + "prohibit_login": false, + "location": "", + "website": "", + "description": "", + "visibility": "public", + "followers_count": 0, + "following_count": 0, + "starred_repos_count": 0, + "username": "importtest" + }, + "name": "nodejs-common", + "full_name": "importtest/nodejs-common", + "description": "", + "empty": false, + "private": false, + "fork": true, + "template": false, + "parent": { + "id": 90520, + "owner": { + "id": 983, + "login": "autogits", + "login_name": "", + "source_id": 0, + "full_name": "", + "email": "autogits@noreply@src.opensuse.org", + "avatar_url": "https://src.opensuse.org/avatars/80a61ef3a14c3c22f0b8b1885d1a75d4", + "html_url": "https://src.opensuse.org/autogits", + "language": "", + "is_admin": false, + "last_login": "0001-01-01T00:00:00Z", + "created": "2024-06-20T09:46:37+02:00", + "restricted": false, + "active": false, + "prohibit_login": false, + "location": "", + "website": "", + "description": "", + "visibility": "public", + "followers_count": 0, + "following_count": 0, + "starred_repos_count": 0, + "username": "autogits" + }, + "name": "nodejs-common", + "full_name": "autogits/nodejs-common", + "description": "", + "empty": false, + "private": false, + "fork": true, + "template": false, + "parent": null, + "mirror": false, + "size": 96, + "language": "", + "languages_url": "https://src.opensuse.org/api/v1/repos/autogits/nodejs-common/languages", + "html_url": "https://src.opensuse.org/autogits/nodejs-common", + "url": "https://src.opensuse.org/api/v1/repos/autogits/nodejs-common", + "link": "", + "ssh_url": "gitea@src.opensuse.org:autogits/nodejs-common.git", + "clone_url": "https://src.opensuse.org/autogits/nodejs-common.git", + "original_url": "", + "website": "", + "stars_count": 0, + "forks_count": 2, + "watchers_count": 2, + "open_issues_count": 0, + "open_pr_counter": 0, + "release_counter": 0, + "default_branch": "factory", + "archived": false, + "created_at": "2024-07-01T13:29:03+02:00", + "updated_at": "2024-07-01T13:29:03+02:00", + "archived_at": "1970-01-01T01:00:00+01:00", + "permissions": { + "admin": false, + "push": false, + "pull": false + }, + "has_issues": false, + "has_wiki": false, + "has_pull_requests": true, + "has_projects": false, + "projects_mode": "all", + "has_releases": false, + "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": true, + "allow_rebase_update": true, + "default_delete_branch_after_merge": false, + "default_merge_style": "merge", + "default_allow_maintainer_edit": false, + "avatar_url": "https://src.opensuse.org/", + "internal": false, + "mirror_interval": "", + "object_format_name": "sha256", + "mirror_updated": "0001-01-01T00:00:00Z", + "repo_transfer": null + }, + "mirror": false, + "size": 111, + "language": "", + "languages_url": "https://src.opensuse.org/api/v1/repos/importtest/nodejs-common/languages", + "html_url": "https://src.opensuse.org/importtest/nodejs-common", + "url": "https://src.opensuse.org/api/v1/repos/importtest/nodejs-common", + "link": "", + "ssh_url": "gitea@src.opensuse.org:importtest/nodejs-common.git", + "clone_url": "https://src.opensuse.org/importtest/nodejs-common.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": "factory", + "archived": false, + "created_at": "2024-08-22T18:03:46+02:00", + "updated_at": "2024-08-22T18:13:15+02:00", + "archived_at": "1970-01-01T01:00:00+01:00", + "permissions": { + "admin": false, + "push": false, + "pull": false + }, + "has_issues": false, + "has_wiki": false, + "has_pull_requests": true, + "has_projects": false, + "projects_mode": "all", + "has_releases": false, + "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": true, + "allow_rebase_update": true, + "default_delete_branch_after_merge": false, + "default_merge_style": "merge", + "default_allow_maintainer_edit": false, + "avatar_url": "https://src.opensuse.org/", + "internal": false, + "mirror_interval": "", + "object_format_name": "sha256", + "mirror_updated": "0001-01-01T00:00:00Z", + "repo_transfer": null + }, + "sender": { + "id": 129, + "login": "adamm", + "login_name": "", + "source_id": 0, + "full_name": "Adam Majer", + "email": "adamm@noreply@src.opensuse.org", + "avatar_url": "https://src.opensuse.org/avatar/babb6ae054a709c238a4e9b0f2b53d53", + "html_url": "https://src.opensuse.org/adamm", + "language": "", + "is_admin": false, + "last_login": "0001-01-01T00:00:00Z", + "created": "2023-07-21T16:43:48+02:00", + "restricted": false, + "active": false, + "prohibit_login": false, + "location": "", + "website": "", + "description": "", + "visibility": "public", + "followers_count": 0, + "following_count": 0, + "starred_repos_count": 0, + "username": "adamm" + } +}` + +const createTagJSON=`{ + "sha": "691c91e5240f24f5a75393caf8a78826b8a6f9f272ab4faef024102739f0060a", + "ref": "foobar", + "ref_type": "tag", + "repository": { + "id": 90992, + "owner": { + "id": 939, + "login": "importtest", + "login_name": "", + "source_id": 0, + "full_name": "", + "email": "importtest@noreply@src.opensuse.org", + "avatar_url": "https://src.opensuse.org/avatars/10dc780b6dc535d772efc579e47b5acd", + "html_url": "https://src.opensuse.org/importtest", + "language": "", + "is_admin": false, + "last_login": "0001-01-01T00:00:00Z", + "created": "2024-03-07T13:35:42+01:00", + "restricted": false, + "active": false, + "prohibit_login": false, + "location": "", + "website": "", + "description": "", + "visibility": "public", + "followers_count": 0, + "following_count": 0, + "starred_repos_count": 0, + "username": "importtest" + }, + "name": "nodejs-common", + "full_name": "importtest/nodejs-common", + "description": "", + "empty": false, + "private": false, + "fork": true, + "template": false, + "parent": { + "id": 90520, + "owner": { + "id": 983, + "login": "autogits", + "login_name": "", + "source_id": 0, + "full_name": "", + "email": "autogits@noreply@src.opensuse.org", + "avatar_url": "https://src.opensuse.org/avatars/80a61ef3a14c3c22f0b8b1885d1a75d4", + "html_url": "https://src.opensuse.org/autogits", + "language": "", + "is_admin": false, + "last_login": "0001-01-01T00:00:00Z", + "created": "2024-06-20T09:46:37+02:00", + "restricted": false, + "active": false, + "prohibit_login": false, + "location": "", + "website": "", + "description": "", + "visibility": "public", + "followers_count": 0, + "following_count": 0, + "starred_repos_count": 0, + "username": "autogits" + }, + "name": "nodejs-common", + "full_name": "autogits/nodejs-common", + "description": "", + "empty": false, + "private": false, + "fork": true, + "template": false, + "parent": null, + "mirror": false, + "size": 96, + "language": "", + "languages_url": "https://src.opensuse.org/api/v1/repos/autogits/nodejs-common/languages", + "html_url": "https://src.opensuse.org/autogits/nodejs-common", + "url": "https://src.opensuse.org/api/v1/repos/autogits/nodejs-common", + "link": "", + "ssh_url": "gitea@src.opensuse.org:autogits/nodejs-common.git", + "clone_url": "https://src.opensuse.org/autogits/nodejs-common.git", + "original_url": "", + "website": "", + "stars_count": 0, + "forks_count": 2, + "watchers_count": 2, + "open_issues_count": 0, + "open_pr_counter": 0, + "release_counter": 0, + "default_branch": "factory", + "archived": false, + "created_at": "2024-07-01T13:29:03+02:00", + "updated_at": "2024-07-01T13:29:03+02:00", + "archived_at": "1970-01-01T01:00:00+01:00", + "permissions": { + "admin": false, + "push": false, + "pull": false + }, + "has_issues": false, + "has_wiki": false, + "has_pull_requests": true, + "has_projects": false, + "projects_mode": "all", + "has_releases": false, + "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": true, + "allow_rebase_update": true, + "default_delete_branch_after_merge": false, + "default_merge_style": "merge", + "default_allow_maintainer_edit": false, + "avatar_url": "https://src.opensuse.org/", + "internal": false, + "mirror_interval": "", + "object_format_name": "sha256", + "mirror_updated": "0001-01-01T00:00:00Z", + "repo_transfer": null + }, + "mirror": false, + "size": 111, + "language": "", + "languages_url": "https://src.opensuse.org/api/v1/repos/importtest/nodejs-common/languages", + "html_url": "https://src.opensuse.org/importtest/nodejs-common", + "url": "https://src.opensuse.org/api/v1/repos/importtest/nodejs-common", + "link": "", + "ssh_url": "gitea@src.opensuse.org:importtest/nodejs-common.git", + "clone_url": "https://src.opensuse.org/importtest/nodejs-common.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": "factory", + "archived": false, + "created_at": "2024-08-22T18:03:46+02:00", + "updated_at": "2024-08-24T14:27:02+02:00", + "archived_at": "1970-01-01T01:00:00+01:00", + "permissions": { + "admin": false, + "push": false, + "pull": false + }, + "has_issues": false, + "has_wiki": false, + "has_pull_requests": true, + "has_projects": false, + "projects_mode": "all", + "has_releases": false, + "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": true, + "allow_rebase_update": true, + "default_delete_branch_after_merge": false, + "default_merge_style": "merge", + "default_allow_maintainer_edit": false, + "avatar_url": "https://src.opensuse.org/", + "internal": false, + "mirror_interval": "", + "object_format_name": "sha256", + "mirror_updated": "0001-01-01T00:00:00Z", + "repo_transfer": null + }, + "sender": { + "id": 129, + "login": "adamm", + "login_name": "", + "source_id": 0, + "full_name": "Adam Majer", + "email": "adamm@noreply@src.opensuse.org", + "avatar_url": "https://src.opensuse.org/avatar/babb6ae054a709c238a4e9b0f2b53d53", + "html_url": "https://src.opensuse.org/adamm", + "language": "", + "is_admin": false, + "last_login": "0001-01-01T00:00:00Z", + "created": "2023-07-21T16:43:48+02:00", + "restricted": false, + "active": false, + "prohibit_login": false, + "location": "", + "website": "", + "description": "", + "visibility": "public", + "followers_count": 0, + "following_count": 0, + "starred_repos_count": 0, + "username": "adamm" + } +}` diff --git a/gitea-events-rabbitmq-publisher/main.go b/gitea-events-rabbitmq-publisher/main.go index ef5551c..3ec6549 100644 --- a/gitea-events-rabbitmq-publisher/main.go +++ b/gitea-events-rabbitmq-publisher/main.go @@ -32,6 +32,13 @@ func connectToRabbitMQ() { go ConnectToExchangeForPublish(host, username, password) } + +var id int +func dumpUnhandledData(reqType string, data []byte) { + id++ + os.WriteFile("/tmp/unhandled-json-" + reqType + "-" + fmt.Sprint(id) + ".json", data, 0600); +} + func main() { var listenAddr string @@ -61,7 +68,7 @@ func main() { } return } - // reqType := hdr[0] + reqType := hdr[0] data, err := io.ReadAll(req.Body) if err != nil { errorStr := fmt.Sprintf("error reading hook info: %v", err) @@ -81,8 +88,23 @@ func main() { res.WriteHeader(http.StatusBadRequest) } +// repo := common.Repository{} + switch reqType { + case "create", "delete": + create := common.CreateWebhook{} + if err = json.Unmarshal(data, &create); err != nil { + res.WriteHeader(http.StatusBadRequest) + if DebugMode { + dumpUnhandledData(reqType, data) + } + } +// repo = create.Repository + } + +// err = PublishMessage(repo.Owner.Username, reqType, data) // write to file for review os.WriteFile("test_data."+fmt.Sprint(connectionId), data, 0644) + connectionId++ /* err = PublishMessage(reqType, req.PathValue("Org"), data) diff --git a/gitea-events-rabbitmq-publisher/rabbitmq.go b/gitea-events-rabbitmq-publisher/rabbitmq.go index c7146a4..ca43c97 100644 --- a/gitea-events-rabbitmq-publisher/rabbitmq.go +++ b/gitea-events-rabbitmq-publisher/rabbitmq.go @@ -59,7 +59,7 @@ func PublicActionMessage(giteaOrg, giteaWebhookType, action string, data []byte) return nil } -func PublishMessage(giteaWebhookType, giteaOrg string, data []byte) error { +func PublishMessage(giteaOrg, giteaWebhookType string, data []byte) error { return PublicActionMessage(giteaOrg, giteaWebhookType, "", data) }