MCPcopy
hub / github.com/vectorize-io/hindsight / parameterAddToHeaderOrQuery

Function parameterAddToHeaderOrQuery

hindsight-clients/go/client.go:184–271  ·  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{}, style string, collectionType string)

Source from the content-addressed store, hash-verified

182// parameterAddToHeaderOrQuery adds the provided object to the request header or url query
183// supporting deep object syntax
184func parameterAddToHeaderOrQuery(headerOrQueryParams interface{}, keyPrefix string, obj interface{}, style string, collectionType string) {
185 var v = reflect.ValueOf(obj)
186 var value = ""
187 if v == reflect.ValueOf(nil) {
188 value = "null"
189 } else {
190 switch v.Kind() {
191 case reflect.Invalid:
192 value = "invalid"
193
194 case reflect.Struct:
195 if t,ok := obj.(MappedNullable); ok {
196 dataMap,err := t.ToMap()
197 if err != nil {
198 return
199 }
200 parameterAddToHeaderOrQuery(headerOrQueryParams, keyPrefix, dataMap, style, collectionType)
201 return
202 }
203 if t, ok := obj.(time.Time); ok {
204 parameterAddToHeaderOrQuery(headerOrQueryParams, keyPrefix, t.Format(time.RFC3339Nano), style, collectionType)
205 return
206 }
207 value = v.Type().String() + " value"
208 case reflect.Slice:
209 var indValue = reflect.ValueOf(obj)
210 if indValue == reflect.ValueOf(nil) {
211 return
212 }
213 var lenIndValue = indValue.Len()
214 for i:=0;i<lenIndValue;i++ {
215 var arrayValue = indValue.Index(i)
216 var keyPrefixForCollectionType = keyPrefix
217 if style == "deepObject" {
218 keyPrefixForCollectionType = keyPrefix + "[" + strconv.Itoa(i) + "]"
219 }
220 parameterAddToHeaderOrQuery(headerOrQueryParams, keyPrefixForCollectionType, arrayValue.Interface(), style, collectionType)
221 }
222 return
223
224 case reflect.Map:
225 var indValue = reflect.ValueOf(obj)
226 if indValue == reflect.ValueOf(nil) {
227 return
228 }
229 iter := indValue.MapRange()
230 for iter.Next() {
231 k,v := iter.Key(), iter.Value()
232 parameterAddToHeaderOrQuery(headerOrQueryParams, fmt.Sprintf("%s[%s]", keyPrefix, k.String()), v.Interface(), style, collectionType)
233 }
234 return
235
236 case reflect.Interface:
237 fallthrough
238 case reflect.Ptr:
239 parameterAddToHeaderOrQuery(headerOrQueryParams, keyPrefix, v.Elem().Interface(), style, collectionType)
240 return
241

Callers 15

FileRetainExecuteMethod · 0.85
GetGraphExecuteMethod · 0.85
GetMemoryExecuteMethod · 0.85
ListMemoriesExecuteMethod · 0.85
ListTagsExecuteMethod · 0.85
RecallMemoriesExecuteMethod · 0.85
ReflectExecuteMethod · 0.85

Calls 4

StringMethod · 0.80
ToMapMethod · 0.65
GetMethod · 0.45
SetMethod · 0.45

Tested by

no test coverage detected