package http import ( "encoding/json" db "infra-dashboard/Database" "io" "log" "net/http" "strconv" "time" "github.com/gorilla/mux" "gopkg.in/guregu/null.v4" ) func GetOS(w http.ResponseWriter, r *http.Request) { var list []db.OS var err error t := time.Now() status := 200 dbConn := db.GetDatabaseConnection() defer dbConn.Close() list, err = db.GetOS(dbConn) if err != nil { log.Println("Error getting OS list") status = 500 } logRequest(t, r, status) w.Header().Set("Content-Type", "application/json") json.NewEncoder(w).Encode(list) } func GetOSbyID(w http.ResponseWriter, r *http.Request) { var os db.OS var err error t := time.Now() status := 200 params := mux.Vars(r) dbConn := db.GetDatabaseConnection() defer dbConn.Close() id, err := strconv.ParseInt(params["id"], 10, 64) if err != nil { log.Println("Error converting ID", err) status = 500 } os, err = db.GetOSbyID(dbConn, int64(id)) if err != nil { log.Println("Error getting OS") status = 500 } logRequest(t, r, status) w.Header().Set("Content-Type", "application/json") json.NewEncoder(w).Encode(os) } func GetDistributionList(w http.ResponseWriter, r *http.Request) { var list []null.String var err error t := time.Now() status := 200 dbConn := db.GetDatabaseConnection() defer dbConn.Close() list, err = db.GetDistributionList(dbConn) if err != nil { log.Println("Error getting distribution list") status = 500 } logRequest(t, r, status) w.Header().Set("Content-Type", "application/json") json.NewEncoder(w).Encode(list) } func GetVersionsByDistributionList(w http.ResponseWriter, r *http.Request) { var list []null.String var err error t := time.Now() status := 200 params := mux.Vars(r) dbConn := db.GetDatabaseConnection() defer dbConn.Close() list, err = db.GetVersionsByDistributionList(dbConn, params["distribution"]) if err != nil { log.Println("Error getting distribution list") status = 500 } logRequest(t, r, status) w.Header().Set("Content-Type", "application/json") json.NewEncoder(w).Encode(list) } func CreateOS(w http.ResponseWriter, r *http.Request) { var os db.OS var err error t := time.Now() status := 204 body, err := io.ReadAll(r.Body) if err != nil { log.Println("Error reading request body", err) } params := make(map[string]null.String) json.Unmarshal(body, ¶ms) os.Distribution = params["distribution"] os.Version = params["version"] os.EndOfSupport = params["end_of_support"] dbConn := db.GetDatabaseConnection() defer dbConn.Close() err = db.CreateOS(os, dbConn) if err != nil { log.Println("Error creating new OS", err) status = 500 } logRequest(t, r, status) w.WriteHeader(status) }