mirror of
https://github.com/gohugoio/hugo.git
synced 2025-08-21 21:35:28 +02:00
tpl: Make getJSON/getCVS accept non-string args
This broke for the Twitter simple shortcode now that Shortcodes accepts typed arguments. Fixes #6382
This commit is contained in:
@@ -23,6 +23,8 @@ import (
|
||||
"net/http"
|
||||
"strings"
|
||||
|
||||
"github.com/spf13/cast"
|
||||
|
||||
"github.com/gohugoio/hugo/cache/filecache"
|
||||
"github.com/gohugoio/hugo/deps"
|
||||
_errors "github.com/pkg/errors"
|
||||
@@ -54,8 +56,8 @@ type Namespace struct {
|
||||
// The data separator can be a comma, semi-colon, pipe, etc, but only one character.
|
||||
// If you provide multiple parts for the URL they will be joined together to the final URL.
|
||||
// GetCSV returns nil or a slice slice to use in a short code.
|
||||
func (ns *Namespace) GetCSV(sep string, urlParts ...string) (d [][]string, err error) {
|
||||
url := strings.Join(urlParts, "")
|
||||
func (ns *Namespace) GetCSV(sep string, urlParts ...interface{}) (d [][]string, err error) {
|
||||
url := joinURL(urlParts)
|
||||
cache := ns.cacheGetCSV
|
||||
|
||||
unmarshal := func(b []byte) (bool, error) {
|
||||
@@ -93,9 +95,9 @@ func (ns *Namespace) GetCSV(sep string, urlParts ...string) (d [][]string, err e
|
||||
// GetJSON expects one or n-parts of a URL to a resource which can either be a local or a remote one.
|
||||
// If you provide multiple parts they will be joined together to the final URL.
|
||||
// GetJSON returns nil or parsed JSON to use in a short code.
|
||||
func (ns *Namespace) GetJSON(urlParts ...string) (interface{}, error) {
|
||||
func (ns *Namespace) GetJSON(urlParts ...interface{}) (interface{}, error) {
|
||||
var v interface{}
|
||||
url := strings.Join(urlParts, "")
|
||||
url := joinURL(urlParts)
|
||||
cache := ns.cacheGetJSON
|
||||
|
||||
req, err := http.NewRequest("GET", url, nil)
|
||||
@@ -122,6 +124,10 @@ func (ns *Namespace) GetJSON(urlParts ...string) (interface{}, error) {
|
||||
return v, nil
|
||||
}
|
||||
|
||||
func joinURL(urlParts []interface{}) string {
|
||||
return strings.Join(cast.ToStringSlice(urlParts), "")
|
||||
}
|
||||
|
||||
// parseCSV parses bytes of CSV data into a slice slice string or an error
|
||||
func parseCSV(c []byte, sep string) ([][]string, error) {
|
||||
if len(sep) != 1 {
|
||||
|
Reference in New Issue
Block a user