jdel/gosspks

View on GitHub
handler/v1/routeModels.go

Summary

Maintainability
A
0 mins
Test Coverage
package v1 // import jdel.org/gosspks/v1

import (
    "encoding/json"
    "net/http"

    "jdel.org/gosspks/util"
    log "github.com/sirupsen/logrus"
)

var loggerModels = log.WithFields(log.Fields{
    "module": util.WhereAmI(),
})

// RouteModels displays synology models
func RouteModels(w http.ResponseWriter, r *http.Request) {
    synoModels := GetModelsFromCacheOrWeb(false)
    if r.URL.Query().Get("name") != "" {
        synoModels = synoModels.FilterByName(r.URL.Query().Get("name"))
    }

    if synoModels == nil {
        w.WriteHeader(http.StatusNotFound)
        loggerModels.Warn("No models available")
        return
    }

    w.Header().Set("Content-Type", "application/json; charset=UTF-8")
    w.Header().Set("Access-Control-Allow-Origin", "*")
    w.Header().Set("Access-Control-Allow-Methods", "GET, OPTIONS")
    w.WriteHeader(http.StatusOK)
    if err := json.NewEncoder(w).Encode(synoModels); err != nil {
        loggerModels.Fatal(err)
    }
}