aboutsummaryrefslogtreecommitdiffstats
path: root/syz-cluster/pkg/controller/api.go
diff options
context:
space:
mode:
Diffstat (limited to 'syz-cluster/pkg/controller/api.go')
-rw-r--r--syz-cluster/pkg/controller/api.go53
1 files changed, 43 insertions, 10 deletions
diff --git a/syz-cluster/pkg/controller/api.go b/syz-cluster/pkg/controller/api.go
index de8545319..4a230a35d 100644
--- a/syz-cluster/pkg/controller/api.go
+++ b/syz-cluster/pkg/controller/api.go
@@ -16,20 +16,22 @@ import (
)
type APIServer struct {
- seriesService *service.SeriesService
- sessionService *service.SessionService
- buildService *service.BuildService
- testService *service.SessionTestService
- findingService *service.FindingService
+ seriesService *service.SeriesService
+ sessionService *service.SessionService
+ buildService *service.BuildService
+ testService *service.SessionTestService
+ findingService *service.FindingService
+ baseFindingService *service.BaseFindingService
}
func NewAPIServer(env *app.AppEnvironment) *APIServer {
return &APIServer{
- seriesService: service.NewSeriesService(env),
- sessionService: service.NewSessionService(env),
- buildService: service.NewBuildService(env),
- testService: service.NewSessionTestService(env),
- findingService: service.NewFindingService(env),
+ seriesService: service.NewSeriesService(env),
+ sessionService: service.NewSessionService(env),
+ buildService: service.NewBuildService(env),
+ testService: service.NewSessionTestService(env),
+ findingService: service.NewFindingService(env),
+ baseFindingService: service.NewBaseFindingService(env),
}
}
@@ -46,6 +48,8 @@ func (c APIServer) Mux() *http.ServeMux {
mux.HandleFunc("/tests/upload_artifacts", c.uploadTestArtifact)
mux.HandleFunc("/tests/upload", c.uploadTest)
mux.HandleFunc("/trees", c.getTrees)
+ mux.HandleFunc("/base_findings/upload", c.uploadBaseFinding)
+ mux.HandleFunc("/base_findings/status", c.baseFindingStatus)
return mux
}
@@ -206,3 +210,32 @@ func (c APIServer) getTrees(w http.ResponseWriter, r *http.Request) {
FuzzConfigs: api.FuzzConfigs,
})
}
+
+func (c APIServer) uploadBaseFinding(w http.ResponseWriter, r *http.Request) {
+ req := api.ParseJSON[api.BaseFindingInfo](w, r)
+ if req == nil {
+ return
+ }
+ err := c.baseFindingService.Upload(r.Context(), req)
+ if errors.Is(err, service.ErrBuildNotFound) {
+ http.Error(w, fmt.Sprint(err), http.StatusNotFound)
+ return
+ } else if err != nil {
+ http.Error(w, fmt.Sprint(err), http.StatusInternalServerError)
+ return
+ }
+ api.ReplyJSON[interface{}](w, nil)
+}
+
+func (c APIServer) baseFindingStatus(w http.ResponseWriter, r *http.Request) {
+ req := api.ParseJSON[api.BaseFindingInfo](w, r)
+ if req == nil {
+ return
+ }
+ resp, err := c.baseFindingService.Status(r.Context(), req)
+ if err != nil {
+ http.Error(w, fmt.Sprint(err), http.StatusInternalServerError)
+ return
+ }
+ api.ReplyJSON[*api.BaseFindingStatus](w, resp)
+}