2024-03-22 16:00:06 +01:00

126 lines
2.7 KiB
Go

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
db_conn := db.GetDatabaseConnection()
defer db_conn.Close()
list, err = db.GetOS(db_conn)
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)
db_conn := db.GetDatabaseConnection()
defer db_conn.Close()
id, err := strconv.ParseInt(params["id"], 10, 64)
if err != nil {
log.Println("Error converting ID", err)
status = 500
}
os, err = db.GetOSbyID(db_conn, 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
db_conn := db.GetDatabaseConnection()
defer db_conn.Close()
list, err = db.GetDistributionList(db_conn)
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)
db_conn := db.GetDatabaseConnection()
defer db_conn.Close()
list, err = db.GetVersionsByDistributionList(db_conn, 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, &params)
os.Distribution = params["distribution"]
os.Version = params["version"]
os.End_of_support = params["end_of_support"]
db_conn := db.GetDatabaseConnection()
defer db_conn.Close()
err = db.CreateOS(os, db_conn)
if err != nil {
log.Println("Error creating new OS", err)
status = 500
}
logRequest(t, r, status)
w.WriteHeader(status)
}