infra-dashboard/Http/package.go

132 lines
2.9 KiB
Go

package http
import (
"encoding/json"
"gopkg.in/guregu/null.v4"
db "infra-dashboard/Database"
"io/ioutil"
"log"
"net/http"
"strconv"
"time"
"github.com/gorilla/mux"
)
func GetAllPackages(w http.ResponseWriter, r *http.Request) {
var list []db.Package
var err error
t := time.Now()
status := 200
db_conn := db.GetDatabaseConnection()
defer db_conn.Close()
list, err = db.GetPackage(db_conn)
if err != nil {
log.Println("Error getting Package list")
status = 500
}
logRequest(t, r, status)
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(list)
}
func GetPackagebyID(w http.ResponseWriter, r *http.Request) {
var pkg db.Package
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
}
pkg, err = db.GetPackagebyID(dbConn, int64(id))
if err != nil {
log.Println("Error getting Package")
status = 500
}
logRequest(t, r, status)
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(pkg)
}
func CreatePackage(w http.ResponseWriter, r *http.Request) {
var pkg db.Package
var err error
t := time.Now()
status := 200
body, err := ioutil.ReadAll(r.Body)
if err != nil {
log.Println(err.Error(), "Error reading request body")
}
params := make(map[string]null.String)
json.Unmarshal(body, &params)
pkg.Name = params["name"]
dbConn := db.GetDatabaseConnection()
defer dbConn.Close()
err = db.CreatePackage(pkg, dbConn)
if err != nil {
log.Println("Error creating package", pkg.Name)
status = 500
}
logRequest(t, r, status)
w.WriteHeader(status)
}
func DisablePackage(w http.ResponseWriter, r *http.Request) {
var pkg db.Package
var err error
var status int
t := time.Now()
body, err := ioutil.ReadAll(r.Body)
if err != nil {
log.Println(err.Error(), "Error reading request body")
}
params := make(map[string]null.String)
json.Unmarshal(body, &params)
pkg.Name = params["name"]
dbConn := db.GetDatabaseConnection()
defer dbConn.Close()
status, err = db.DisablePackage(pkg, dbConn)
if err != nil {
log.Println(err.Error(), "Error disabling package", pkg.Name)
}
logRequest(t, r, status)
w.WriteHeader(status)
}
func DeletePackage(w http.ResponseWriter, r *http.Request) {
var pkg db.Package
var err error
var status int
t := time.Now()
body, err := ioutil.ReadAll(r.Body)
if err != nil {
log.Println(err.Error(), "Error reading request body")
}
params := make(map[string]null.String)
json.Unmarshal(body, &params)
pkg.Name = params["name"]
dbConn := db.GetDatabaseConnection()
defer dbConn.Close()
status, err = db.DeletePackage(pkg, dbConn)
if err != nil {
log.Println(err.Error(), "Error deleting package", pkg.Name)
}
logRequest(t, r, status)
w.WriteHeader(status)
}