Documentation ¶
Index ¶
- func GetValue(key string, kv []KeyValuePair) string
- func MapParams(data interface{}) map[string]string
- func NamedValuesFromEnv(prefix string) map[string][]string
- func NamedValuesFromReader(prefix string, reader string_utils.KeyReader) map[string][]string
- func NamedValuesFromURL(params map[string]string, multiValueParams map[string][]string) map[string][]string
- func UnmarshalJSON(data []byte, val interface{}) error
- func UnmarshalNamedValues(namedValues map[string][]string, structPtr interface{}) (unusedValues map[string][]string, err error)
- type KeyValuePair
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func GetValue ¶ added in v1.72.0
func GetValue(key string, kv []KeyValuePair) string
GetValue returns the value for the given key from a KeyValuePair slice.
func MapParams ¶
MapParams convert fields in a struct to a map of parameters, as if defined in a URL to convert the new params struct into a map[string]string
func NamedValuesFromEnv ¶
Purpose:
Make a list of named values from the env for parsing into a struct
Parameters:
prefix should be uppercase (by convention) env prefix like "MY_LIB_CONFIG", without trailing "_"
Result:
named values that can be passed into UnmarshalNamedValues()
All env starting with "<prefix>_" will be copied without "<prefix>_" Examples with prefix="MY_LIB_CONFIG": MY_LIB_CONFIG_MAX_SIZE="6" -> {"MAX_SIZE":["6"]} one value of "6" MY_LIB_CONFIG_NAMES ="A,B,C" -> {"NAMES":["A,B,C"]} one value of "A,B,C" MY_LIB_CONFIG_NRS ="1,2,3" -> {"NRS":["1,2,3"]} one value of "1,2,3" (all env values are string, later parsed into int based on struct field type) MY_LIB_CONFIG_CODES ="[1,2,3]"" -> {"CODES":["1","2","3"]} 3 values of "1", "2" and "3" because of outer [...], env values are string
MY_LIB_CONFIG_CODES_1=5 MY_LIB_CONFIG_CODES_5=7 MY_LIB_CONFIG_CODES_2=10 -> {"CODES":["5","10","7"]} 3 values ordered on suffixes "_1", "_5", "_2" moving 10 before 7
MY_LIB_CONFIG_ADDRS=["55 Crescent, Town", "12 Big Street, City"] -> 2 values including commas because of quoted CSV
func NamedValuesFromReader ¶
func NamedValuesFromReader(prefix string, reader string_utils.KeyReader) map[string][]string
func NamedValuesFromURL ¶
func NamedValuesFromURL(params map[string]string, multiValueParams map[string][]string) map[string][]string
converts query string params to named values that can be parsed into a struct it support both single/multi-value params, depending how you get them from your HTTP library
(e.g. AWS API Gateway Context returns both but default golang net/http returns only params)
func UnmarshalJSON ¶
UnmarshalJSON performs a JSON unmarshalling, but on type mismatches it returns a more user friendly error. Used exactly the same as json.Unmarshal
func UnmarshalNamedValues ¶
func UnmarshalNamedValues(namedValues map[string][]string, structPtr interface{}) (unusedValues map[string][]string, err error)
Purpose:
UnmarshalNamedValues() parses a set of named values into a struct using json tag matching Unlike json.Unmarshal(), it takes care of converting quoted "true" -> true, "1" -> int(1) etc... Typically used to parse environment or URL params into a struct because normal json.Unmarshal() will fail to parse "2" into an integer etc By convention, the names should be lowercase to match json tag with "_" delimeters And also use "_" for nested sub-struct names named value "a_b_c_d":5 would be stored in field with json tag "a_b_c_d" or field with json tag "a_b" which is a struct with a json tagged field "c_d" etc...
Parameters:
namedValues is name-value pairs, typical from URL params or OS environment see construction functions for this: NamedValuesFromEnv() NamedValuesFromURL() structPtr must be ptr to a struct variable undefined values will not be changed, so you can call this multiple times on the same struct to amend a few values, leaving the rest and default values unchanged
Return:
unused values nil or error if some values could not be used If all values must be used, check len(unusedValues) when err==nil
Types ¶
type KeyValuePair ¶ added in v1.72.0
KeyValuePair defines a key/value pair derived from form data
func FormToKeyValuePairs ¶ added in v1.72.0
func FormToKeyValuePairs(body string) []KeyValuePair
FormToKeyValuePairs returns a string-based map of strings as derived from posted form keys and values. e.g. oauth_consumer_key=mlhgs&oauth_consumer_secret=x240ar&oauth_verifier=b0qjbx&store_base_url=http%3A%2F%2Flocalhost.com%2Fstore