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)
| 182 | // parameterAddToHeaderOrQuery adds the provided object to the request header or url query |
| 183 | // supporting deep object syntax |
| 184 | func 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 |
no test coverage detected