JSON encode schemas URL passed to html template

This commit is contained in:
Darren Shepherd 2021-02-08 17:37:11 -07:00
parent 36fcb689bc
commit 9272017550

View File

@ -1,6 +1,7 @@
package writer package writer
import ( import (
"encoding/json"
"strings" "strings"
"github.com/rancher/steve/pkg/schemaserver/types" "github.com/rancher/steve/pkg/schemaserver/types"
@ -22,7 +23,7 @@ var (
<script> <script>
var user = "admin"; var user = "admin";
var curlUser='${CATTLE_ACCESS_KEY}:${CATTLE_SECRET_KEY}'; var curlUser='${CATTLE_ACCESS_KEY}:${CATTLE_SECRET_KEY}';
var schemas="%SCHEMAS%"; var schemas=%SCHEMAS%;
var data = var data =
` `
end = []byte(`</script> end = []byte(`</script>
@ -57,7 +58,7 @@ func (h *HTMLResponseWriter) write(apiOp *types.APIRequest, code int, obj interf
schemaSchema := apiOp.Schemas.Schemas["schema"] schemaSchema := apiOp.Schemas.Schemas["schema"]
headerString := start headerString := start
if schemaSchema != nil { if schemaSchema != nil {
headerString = strings.Replace(headerString, "%SCHEMAS%", apiOp.URLBuilder.Collection(schemaSchema), 1) headerString = strings.Replace(headerString, "%SCHEMAS%", jsonEncodeURL(apiOp.URLBuilder.Collection(schemaSchema)), 1)
} }
var jsurl, cssurl string var jsurl, cssurl string
if h.CSSURL != nil && h.JSURL != nil && h.CSSURL() != "" && h.JSURL() != "" { if h.CSSURL != nil && h.JSURL != nil && h.CSSURL() != "" && h.JSURL() != "" {
@ -83,3 +84,8 @@ func (h *HTMLResponseWriter) write(apiOp *types.APIRequest, code int, obj interf
apiOp.Response.Write(end) apiOp.Response.Write(end)
} }
} }
func jsonEncodeURL(str string) string {
data, _ := json.Marshal(str)
return string(data)
}