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