mirror of
https://github.com/aykhans/sarin.git
synced 2026-02-28 06:49:13 +00:00
- Rename Append to Merge on Cookies, Headers, and Params types and simplify Parse to use direct append - Replace strings_Join(sep, ...values) with slice_Join(slice, sep) for consistency with slice-based template functions - Auto-enable quiet mode when stdout is not a terminal - Remove ErrCLINoArgs check to allow running sarin without arguments - Add -it flag to Docker examples in docs
41 lines
830 B
Go
41 lines
830 B
Go
package types
|
|
|
|
import "strings"
|
|
|
|
type Param KeyValue[string, []string]
|
|
|
|
type Params []Param
|
|
|
|
func (params Params) GetValue(key string) *[]string {
|
|
for i := range params {
|
|
if params[i].Key == key {
|
|
return ¶ms[i].Value
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (params *Params) Merge(param ...Param) {
|
|
for _, p := range param {
|
|
if item := params.GetValue(p.Key); item != nil {
|
|
*item = append(*item, p.Value...)
|
|
} else {
|
|
*params = append(*params, p)
|
|
}
|
|
}
|
|
}
|
|
|
|
func (params *Params) Parse(rawValues ...string) {
|
|
for _, rawValue := range rawValues {
|
|
*params = append(*params, *ParseParam(rawValue))
|
|
}
|
|
}
|
|
|
|
func ParseParam(rawValue string) *Param {
|
|
parts := strings.SplitN(rawValue, "=", 2)
|
|
if len(parts) == 1 {
|
|
return &Param{Key: parts[0], Value: []string{""}}
|
|
}
|
|
return &Param{Key: parts[0], Value: []string{parts[1]}}
|
|
}
|