mirror of
https://github.com/kyverno/policy-reporter.git
synced 2024-12-15 17:50:58 +00:00
af1285c08f
* Internal refactoring * Unification of PolicyReports and ClusterPolicyReports processing, APIs still stable * DEPRECETED `crdVersion`, Policy Reporter handels now both versions by default * DEPRECETED `cleanupDebounceTime`, new internal caching replaced the debounce mechanism, debounce still exist with a fixed period to improve stable metric values.
78 lines
2 KiB
Go
78 lines
2 KiB
Go
package api
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"net/http"
|
|
|
|
"github.com/fjogeleit/policy-reporter/pkg/report"
|
|
)
|
|
|
|
// PolicyReportHandler for the PolicyReport REST API
|
|
func PolicyReportHandler(s *report.PolicyReportStore) http.HandlerFunc {
|
|
return func(w http.ResponseWriter, req *http.Request) {
|
|
w.Header().Set("Content-Type", "application/json; charset=UTF-8")
|
|
w.WriteHeader(http.StatusOK)
|
|
|
|
reports := s.List("PolicyReport")
|
|
if len(reports) == 0 {
|
|
fmt.Fprint(w, "[]")
|
|
|
|
return
|
|
}
|
|
|
|
apiReports := make([]PolicyReport, 0, len(reports))
|
|
for _, r := range reports {
|
|
apiReports = append(apiReports, mapPolicyReport(r))
|
|
}
|
|
|
|
if err := json.NewEncoder(w).Encode(apiReports); err != nil {
|
|
w.WriteHeader(http.StatusInternalServerError)
|
|
fmt.Fprintf(w, `{ "message": "%s" }`, err.Error())
|
|
}
|
|
}
|
|
}
|
|
|
|
// ClusterPolicyReportHandler for the ClusterPolicyReport REST API
|
|
func ClusterPolicyReportHandler(s *report.PolicyReportStore) http.HandlerFunc {
|
|
return func(w http.ResponseWriter, req *http.Request) {
|
|
w.Header().Set("Content-Type", "application/json; charset=UTF-8")
|
|
w.WriteHeader(http.StatusOK)
|
|
|
|
reports := s.List(report.ClusterPolicyReportType)
|
|
if len(reports) == 0 {
|
|
fmt.Fprint(w, "[]")
|
|
|
|
return
|
|
}
|
|
|
|
apiReports := make([]PolicyReport, 0, len(reports))
|
|
for _, r := range reports {
|
|
apiReports = append(apiReports, mapPolicyReport(r))
|
|
}
|
|
|
|
if err := json.NewEncoder(w).Encode(apiReports); err != nil {
|
|
w.WriteHeader(http.StatusInternalServerError)
|
|
fmt.Fprintf(w, `{ "message": "%s" }`, err.Error())
|
|
}
|
|
}
|
|
}
|
|
|
|
// TargetsHandler for the Targets REST API
|
|
func TargetsHandler(targets []Target) http.HandlerFunc {
|
|
return func(w http.ResponseWriter, req *http.Request) {
|
|
w.Header().Set("Content-Type", "application/json; charset=UTF-8")
|
|
w.WriteHeader(http.StatusOK)
|
|
|
|
if len(targets) == 0 {
|
|
fmt.Fprint(w, "[]")
|
|
|
|
return
|
|
}
|
|
|
|
if err := json.NewEncoder(w).Encode(targets); err != nil {
|
|
w.WriteHeader(http.StatusInternalServerError)
|
|
fmt.Fprintf(w, `{ "message": "%s" }`, err.Error())
|
|
}
|
|
}
|
|
}
|