refactor(ops/gerrit-webhook-to-irccat): use streams data types

The types are different for `gerrit stream-events` and webhooks, so
switch to a fork of go-gerrit containing their definitions.

https://github.com/andygrunwald/go-gerrit/pull/189 is the upstream PR.
Change-Id: I24136af2f2cf5655f2a8278632a3b0f52aa6adcc
Reviewed-on: https://cl.snix.dev/c/snix/+/30544
Autosubmit: Florian Klink <flokli@flokli.de>
Tested-by: besadii
Reviewed-by: Ilan Joselevich <personal@ilanjoselevich.com>
This commit is contained in:
Florian Klink 2025-05-24 00:17:24 +03:00 committed by clbot
parent abb2daa4ae
commit fcd43e8bc8
4 changed files with 12 additions and 15 deletions

View file

@ -10,5 +10,5 @@ pkgs.buildGoModule {
./go.sum
];
};
vendorHash = "sha256-x5ldt3KWL6ri5UqbKFXN717R4JVTIFZyn5DsgGi/RY4=";
vendorHash = "sha256-Xq0p6EEPFS23H+RMkzQw6767d8WujAz7doR6E/YKrgY=";
}

View file

@ -10,13 +10,11 @@ require (
)
require (
github.com/google/go-querystring v1.1.0 // indirect
github.com/google/uuid v1.6.0 // indirect
go.opentelemetry.io/otel v1.29.0 // indirect
go.opentelemetry.io/otel/trace v1.29.0 // indirect
)
// switch to the "fixes" branch, which renames _number to number and
// work_in_progress to wip to match the structure of the JSON being sent.
// Tracking issue: https://github.com/andygrunwald/go-gerrit/pull/187
replace github.com/andygrunwald/go-gerrit v1.0.0 => github.com/flokli/go-gerrit v0.0.0-20250515192813-cf3a6e735367
// Use the different data types sent in streams
// https://github.com/andygrunwald/go-gerrit/pull/189
replace github.com/andygrunwald/go-gerrit v1.0.0 => github.com/flokli/go-gerrit v0.0.0-20250523210852-9e357d872ff3

View file

@ -2,13 +2,12 @@ github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/flokli/go-gerrit v0.0.0-20250515192813-cf3a6e735367 h1:qurVA28MaXYGbk1nWD5+PQhO5URhJW0PTgPNT1CPp0c=
github.com/flokli/go-gerrit v0.0.0-20250515192813-cf3a6e735367/go.mod h1:SeP12EkHZxEVjuJ2HZET304NBtHGG2X6w2Gzd0QXAZw=
github.com/flokli/go-gerrit v0.0.0-20250523210852-9e357d872ff3 h1:bkCL+U77VI69eCzZjBszrtl4ytCJcWZdkZeKfiNlz3o=
github.com/flokli/go-gerrit v0.0.0-20250523210852-9e357d872ff3/go.mod h1:SeP12EkHZxEVjuJ2HZET304NBtHGG2X6w2Gzd0QXAZw=
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8=
github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=

View file

@ -18,7 +18,7 @@ import (
sloghttp "github.com/samber/slog-http"
"golang.org/x/sync/errgroup"
"github.com/andygrunwald/go-gerrit"
gerritStreams "github.com/andygrunwald/go-gerrit/streams"
)
// TODO:
@ -27,7 +27,7 @@ import (
var logger *slog.Logger
var tmplStr = `{{- if eq .Type "patchset-created" -}}
{{- if (and (eq .PatchSet.Number "1") (eq .Change.WorkInProgress false) ) -}}
{{- if (and (eq .PatchSet.Number "1") (eq .Change.Wip false) ) -}}
#snix CL/{{.Change.Number}} proposed by {{.Change.Owner.Username}} - {{.Change.Subject}} - {{.Change.URL}}
{{- end -}}
{{- else if eq .Type "change-merged" -}}
@ -51,17 +51,17 @@ func handler(w http.ResponseWriter, r *http.Request) {
}
logger.InfoContext(r.Context(), "received event", slog.Any("body", body.Bytes()))
var eventInfo gerrit.EventInfo
if err := json.Unmarshal(body.Bytes(), &eventInfo); err != nil {
var event gerritStreams.Event
if err := json.Unmarshal(body.Bytes(), &event); err != nil {
logger.WarnContext(r.Context(), "failed to parse body", slog.Any("error", err))
return
}
logger.InfoContext(r.Context(), "received event", slog.Any("event", eventInfo))
logger.InfoContext(r.Context(), "received event", slog.Any("event", event))
// render the template into a buffer.
var msg bytes.Buffer
if err := tmpl.Execute(&msg, eventInfo); err != nil {
if err := tmpl.Execute(&msg, event); err != nil {
logger.WarnContext(r.Context(), "failed to execute template with data", slog.Any("error", err))
return
}