Skip to content
This repository has been archived by the owner on Nov 19, 2024. It is now read-only.

Commit

Permalink
Merge branch 'develop'
Browse files Browse the repository at this point in the history
  • Loading branch information
willie68 committed May 16, 2021
2 parents d7d4ca4 + 3708272 commit 8b1a3a4
Show file tree
Hide file tree
Showing 51 changed files with 1,418 additions and 140 deletions.
7 changes: 5 additions & 2 deletions comment.txt
Original file line number Diff line number Diff line change
Expand Up @@ -33,5 +33,8 @@ https://github.com/amimof/huego
gVal validation lib
https://github.com/PaesslerAG/gval

Elgato stream deck hardware
https://github.com/dh1tw/streamdeck
Homematic
XML-API

Streamdeck core
https://github.com/VVEIRD/StreamDeckCore/
1 change: 1 addition & 0 deletions service/.vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [




Expand Down
108 changes: 107 additions & 1 deletion service/api/routes/configapi.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package routes

import (
"bytes"
"encoding/json"
"fmt"
"image"
"image/png"
Expand All @@ -25,6 +26,7 @@ import (
"wkla.no-ip.biz/remote-desk-service/config"
clog "wkla.no-ip.biz/remote-desk-service/logging"
"wkla.no-ip.biz/remote-desk-service/pac"
"wkla.no-ip.biz/remote-desk-service/pkg"
"wkla.no-ip.biz/remote-desk-service/pkg/models"
"wkla.no-ip.biz/remote-desk-service/web"
)
Expand All @@ -46,6 +48,9 @@ func ConfigRoutes() *chi.Mux {
router.Get("/commands", GetCommands)
router.Get("/icons/{iconname}", GetIcon)
router.With(handler.AuthCheck()).Get("/check", GetCheck)
router.Get("/integrations", GetInteg)
router.With(handler.AuthCheck()).Post("/integrations/{integname}", PostInteg)
router.Get("/credits", GetCredits)
initIconMapper()
return router
}
Expand Down Expand Up @@ -229,7 +234,6 @@ func GetIconMapperKey(response http.ResponseWriter, request *http.Request) {
render.JSON(response, request, value)
}
handleFile(response, request, value)
return
}

func handleFile(response http.ResponseWriter, request *http.Request, value string) {
Expand Down Expand Up @@ -283,3 +287,105 @@ GetCheck simply checks the authentication
func GetCheck(response http.ResponseWriter, request *http.Request) {
render.JSON(response, request, "ok")
}

/*
GetInteg get parameter config of the integrations
*/
func GetInteg(response http.ResponseWriter, request *http.Request) {
var localConfig map[string]interface{}
result := make(map[string]interface{})
settings := make(map[string]interface{})
for _, integration := range pkg.IntegInfos {
localConfig = nil
extconfig := config.Get().ExternalConfig
value, ok := extconfig[integration.Name]
if ok {
localConfig = value.(map[string]interface{})
}

setting := make(map[string]interface{})
for _, param := range integration.Parameters {
if localConfig != nil {
setting[param.Name] = localConfig[param.Name]
} else {
switch param.Type {
case "string":
setting[param.Name] = ""
case "[]string":
setting[param.Name] = []string{}
case "int":
setting[param.Name] = 0
case "bool":
setting[param.Name] = false
case "color":
setting[param.Name] = ""
case "icon":
setting[param.Name] = ""
case "date":
setting[param.Name] = "2006-01-02"
}
}
}
settings[integration.Name] = setting
}
result["infos"] = pkg.IntegInfos
result["settings"] = settings
render.JSON(response, request, result)
}

// PostInteg post a new config
func PostInteg(response http.ResponseWriter, request *http.Request) {
integName, err := api.Param(request, "integname")
if err != nil {
clog.Logger.Errorf("Error reading integ name: %v", err)
api.Err(response, request, err)
return
}

decoder := json.NewDecoder(request.Body)
var params map[string]interface{}
err = decoder.Decode(&params)
if err != nil {
clog.Logger.Errorf("Error reading json body: %v", err)
api.Err(response, request, err)
return
}
localConfig := config.Get()
extConfig := localConfig.ExternalConfig
integConfig, ok := extConfig[integName].(map[string]interface{})
if !ok {
err := fmt.Errorf("error getting integ config for name: %s", integName)
clog.Logger.Error(err.Error())
api.Err(response, request, err)
return
}
for k, v := range params {
_, ok := integConfig[k]
if !ok {
err := fmt.Errorf("error parameter not found: %s", k)
clog.Logger.Error(err.Error())
api.Err(response, request, err)
return
}
integConfig[k] = v
}
config.Save()
render.JSON(response, request, integConfig)
}

/*
GetCredits returning a converted icon back to the client
*/
func GetCredits(response http.ResponseWriter, request *http.Request) {
credits := web.CreditsAsset

ctype := mime.TypeByExtension(".html")
response.Header().Set("Content-Type", ctype)
response.Header().Set("Content-Length", strconv.FormatInt(int64(len(credits)), 10))
response.WriteHeader(http.StatusOK)

if request.Method != "HEAD" {
r := bytes.NewBuffer([]byte(credits))
io.Copy(response, r)
}
}
Loading

0 comments on commit 8b1a3a4

Please sign in to comment.