MCPcopy Index your code
hub / github.com/FunctionStream/function-stream / parameterAddToHeaderOrQuery

Function parameterAddToHeaderOrQuery

admin/client/client.go:159–242  ·  view source on GitHub ↗

parameterAddToHeaderOrQuery adds the provided object to the request header or url query supporting deep object syntax

(headerOrQueryParams interface{}, keyPrefix string, obj interface{}, collectionType string)

Source from the content-addressed store, hash-verified

157// parameterAddToHeaderOrQuery adds the provided object to the request header or url query
158// supporting deep object syntax
159func parameterAddToHeaderOrQuery(headerOrQueryParams interface{}, keyPrefix string, obj interface{}, collectionType string) {
160 var v = reflect.ValueOf(obj)
161 var value = ""
162 if v == reflect.ValueOf(nil) {
163 value = "null"
164 } else {
165 switch v.Kind() {
166 case reflect.Invalid:
167 value = "invalid"
168
169 case reflect.Struct:
170 if t, ok := obj.(MappedNullable); ok {
171 dataMap, err := t.ToMap()
172 if err != nil {
173 return
174 }
175 parameterAddToHeaderOrQuery(headerOrQueryParams, keyPrefix, dataMap, collectionType)
176 return
177 }
178 if t, ok := obj.(time.Time); ok {
179 parameterAddToHeaderOrQuery(headerOrQueryParams, keyPrefix, t.Format(time.RFC3339), collectionType)
180 return
181 }
182 value = v.Type().String() + " value"
183 case reflect.Slice:
184 var indValue = reflect.ValueOf(obj)
185 if indValue == reflect.ValueOf(nil) {
186 return
187 }
188 var lenIndValue = indValue.Len()
189 for i := 0; i < lenIndValue; i++ {
190 var arrayValue = indValue.Index(i)
191 parameterAddToHeaderOrQuery(headerOrQueryParams, keyPrefix, arrayValue.Interface(), collectionType)
192 }
193 return
194
195 case reflect.Map:
196 var indValue = reflect.ValueOf(obj)
197 if indValue == reflect.ValueOf(nil) {
198 return
199 }
200 iter := indValue.MapRange()
201 for iter.Next() {
202 k, v := iter.Key(), iter.Value()
203 parameterAddToHeaderOrQuery(headerOrQueryParams, fmt.Sprintf("%s[%s]", keyPrefix, k.String()), v.Interface(), collectionType)
204 }
205 return
206
207 case reflect.Interface:
208 fallthrough
209 case reflect.Ptr:
210 parameterAddToHeaderOrQuery(headerOrQueryParams, keyPrefix, v.Elem().Interface(), collectionType)
211 return
212
213 case reflect.Int, reflect.Int8, reflect.Int16,
214 reflect.Int32, reflect.Int64:
215 value = strconv.FormatInt(v.Int(), 10)
216 case reflect.Uint, reflect.Uint8, reflect.Uint16,

Callers

nothing calls this directly

Calls 6

ToMapMethod · 0.65
IndexMethod · 0.65
StringMethod · 0.45
TypeMethod · 0.45
GetMethod · 0.45
SetMethod · 0.45

Tested by

no test coverage detected