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) { t := time.Now() logRequest(t, r, 418) w.WriteHeader(http.StatusTeapot) fmt.Fprint(w, "Bip Boop I'm a teapot") } 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 logRequest(t time.Time, r *http.Request, s int) { log.Printf("%s - - %s \"%s %s %s\" %d 0 \"-\" \"%s\" %d\n", r.Host, t.Format("[02/Jan/2006:15:04:05 -0700]"), r.Method, r.URL.Path, r.Proto, s, r.UserAgent(), time.Since(t).Milliseconds(), ) }