From 29e1a0921937025d8f1f96c716d67e2e89ca42bb Mon Sep 17 00:00:00 2001 From: kirby Date: Fri, 22 Mar 2024 09:42:32 +0100 Subject: [PATCH] refacto os --- Database/os.go | 2 +- Http/os.go | 119 +++++++++++++++++++++++++++++++++++++++++++++++++ Http/utils.go | 111 --------------------------------------------- main.go | 4 +- 4 files changed, 122 insertions(+), 114 deletions(-) create mode 100644 Http/os.go diff --git a/Database/os.go b/Database/os.go index 2f6324a..aceea4d 100644 --- a/Database/os.go +++ b/Database/os.go @@ -61,7 +61,7 @@ func GetDistributionList(db *sql.DB) ([]null.String, error) { return list, nil } -func GetVersionByDistributionList(db *sql.DB, d string) ([]null.String, error) { +func GetVersionsByDistributionList(db *sql.DB, d string) ([]null.String, error) { var list []null.String rows, err := db.Query("SELECT DISTINCT version FROM dashboard_os where distribution = ?", d) if err != nil { diff --git a/Http/os.go b/Http/os.go new file mode 100644 index 0000000..09bbf51 --- /dev/null +++ b/Http/os.go @@ -0,0 +1,119 @@ +package http + +import ( + "encoding/json" + db "infra-dashboard/Database" + "io" + "log" + "net/http" + "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() + os, err = db.GetOSbyID(db_conn, params["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, ¶ms) + 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) +} diff --git a/Http/utils.go b/Http/utils.go index a6eb3d8..1ff5d61 100644 --- a/Http/utils.go +++ b/Http/utils.go @@ -1,16 +1,11 @@ package http import ( - "encoding/json" "fmt" - db "infra-dashboard/Database" "io" "log" "net/http" "time" - - "github.com/gorilla/mux" - "gopkg.in/guregu/null.v4" ) func RequestHandler(w http.ResponseWriter, r *http.Request) { @@ -24,112 +19,6 @@ func HealthHandler(w http.ResponseWriter, _ *http.Request) { _, _ = io.WriteString(w, "OK") } -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() - os, err = db.GetOSbyID(db_conn, params["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 GetVersionByDistributionList(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.GetVersionByDistributionList(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, ¶ms) - 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) -} - func logRequest(t time.Time, r *http.Request, s int) { log.Printf("%s - - %s \"%s %s %s\" %d 0 \"-\" \"%s\" %d\n", r.Host, diff --git a/main.go b/main.go index 1559846..c9406c7 100644 --- a/main.go +++ b/main.go @@ -31,8 +31,8 @@ func main() { router.HandleFunc("/os", h.GetOS).Methods("GET") router.HandleFunc("/os/{id:[0-9]+}", h.GetOSbyID).Methods("GET") router.HandleFunc("/os/create", h.CreateOS).Methods("POST") - router.HandleFunc("/distribution", h.GetDistributionList).Methods("GET") - router.HandleFunc("/distribution/{distribution:[a-zA-Z]+}/version", h.GetVersionByDistributionList).Methods("GET") + router.HandleFunc("/os/distribution", h.GetDistributionList).Methods("GET") + router.HandleFunc("/os/distribution/{distribution:[a-zA-Z]+}/versions", h.GetVersionsByDistributionList).Methods("GET") log.Fatal(http.ListenAndServe(":8080", router)) }