package main /* * This file is part of Autogits. * * Copyright © 2024 SUSE LLC * * Autogits is free software: you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free Software * Foundation, either version 2 of the License, or (at your option) any later * version. * * Autogits 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 General Public License for more details. * * You should have received a copy of the GNU General Public License along with * Foobar. If not, see . */ import ( "fmt" "log" "net/http" "os" "time" "src.opensuse.org/autogits/common" ) const ( ListenAddr = "[::1]:8003" AppName = "obs-status-service" ) type BuildStatusCacheItem struct { CacheTime time.Time Result []*common.BuildResult } var obs *common.ObsClient var buildStatusCache map[string]BuildStatusCacheItem /* func CacheBuildStatus(prj, pkg string) ([]common.BuildResult, error) { list, err := obs.BuildStatus(prj, pkg) if err != nil { return nil, err } return } */ func PackageBuildStatus(prj, pkg string) (common.ObsBuildStatusDetail, error) { return common.ObsBuildStatusDetail{ Code: "succeeded", Description: "stuff", Success: true, Finished: true, }, nil } /* func PackageStatusSvg(buildStatus []common.ObsBuildStatusDetail) []byte { return } */ func PackageStatusSummarySvg(buildStatus common.ObsBuildStatusDetail) []byte { fillColor := "orange" textColor := "grey" if buildStatus.Finished { textColor = "black" if buildStatus.Success { fillColor = "green" } else { fillColor = "red" } } return []byte(` ` + buildStatus.Code + ` `) } func main() { common.RequireObsSecretToken() go ProcessingObsMessages("rabbit.opensuse.org", "opensuse", "opensuse", "pubsub") obsHost := os.Getenv("OBS_HOSTNAME") if len(obsHost) == 0 { log.Fatal("OBS_HOSTNAME env required.") } /* if obs, err := common.NewObsClient(obsHost); err != nil { log.Fatal(err) } */ http.HandleFunc("GET /{ObsProject}", func(res http.ResponseWriter, req *http.Request) { res.WriteHeader(http.StatusBadRequest) }) http.HandleFunc("GET /{ObsProject}/{Package}", func(res http.ResponseWriter, req *http.Request) { obsPrj := req.PathValue("ObsProject") obsPkg := req.PathValue("ObsPackage") status, _ := PackageBuildStatus(obsPrj, obsPkg) svg := PackageStatusSummarySvg(status) res.Header().Add("content-type", "image/svg+xml") res.Header().Add("size", fmt.Sprint(len(svg))) res.Write(svg) }) log.Fatal(http.ListenAndServe(ListenAddr, nil)) }