in pkg/client/http/mapper.go [154:190]
func setTarget(target *requestParams, to string, key string, val any) error {
valType := reflect.TypeOf(val)
if (to == constant.Headers || to == constant.QueryStrings) && valType.Kind() != reflect.String {
return errors.Errorf("%s only accepts string", to)
}
switch to {
case constant.Headers:
target.Header.Set(key, val.(string))
case constant.RequestURI:
target.URIParams.Set(key, val.(string))
case constant.QueryStrings:
target.Query.Set(key, val.(string))
case constant.RequestBody:
rawBody, err := io.ReadAll(target.Body)
defer func() {
target.Body = io.NopCloser(bytes.NewReader(rawBody))
}()
if err != nil {
return errors.New("Raw body read failed")
}
mapBody := map[string]any{}
if len(rawBody) != 0 {
err = json.Unmarshal(rawBody, &mapBody)
if err != nil {
return errors.New("Raw body parse failed")
}
}
setMapWithPath(mapBody, key, val)
rawBody, err = json.Marshal(mapBody)
if err != nil {
return errors.New("Stringify map to body failed")
}
default:
return errors.Errorf("Mapping target to %s does not support", to)
}
return nil
}