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