regenerated with new spec

This commit is contained in:
Luke Hagar
2024-09-09 18:15:22 +00:00
parent e4db9f59ee
commit 3cfd677a46
678 changed files with 32760 additions and 8167 deletions

View File

@@ -1,4 +1,4 @@
// Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
package utils
@@ -6,12 +6,23 @@ import (
"context"
"encoding/json"
"fmt"
"math/big"
"net/http"
"net/url"
"reflect"
"time"
"github.com/ericlagergren/decimal"
"github.com/LukeHagar/plexgo/types"
)
func PopulateQueryParams(_ context.Context, req *http.Request, queryParams interface{}, globals interface{}) error {
// Query parameters may already be present from overriding URL
if req.URL.RawQuery != "" {
return nil
}
values := url.Values{}
globalsAlreadyPopulated, err := populateQueryParams(queryParams, globals, values, []string{})
@@ -132,56 +143,99 @@ func populateDeepObjectParams(tag *paramTag, objType reflect.Type, objValue refl
return values
}
if objType.Kind() == reflect.Pointer {
objType = objType.Elem()
if objValue.Kind() == reflect.Pointer {
objValue = objValue.Elem()
}
switch objType.Kind() {
case reflect.Struct:
for i := 0; i < objType.NumField(); i++ {
fieldType := objType.Field(i)
valType := objValue.Field(i)
if isNil(fieldType.Type, valType) {
continue
}
if fieldType.Type.Kind() == reflect.Pointer {
valType = valType.Elem()
}
qpTag := parseQueryParamTag(fieldType)
if qpTag == nil {
continue
}
switch valType.Kind() {
case reflect.Array, reflect.Slice:
for i := 0; i < valType.Len(); i++ {
values.Add(fmt.Sprintf("%s[%s]", tag.ParamName, qpTag.ParamName), valToString(valType.Index(i).Interface()))
}
default:
values.Add(fmt.Sprintf("%s[%s]", tag.ParamName, qpTag.ParamName), valToString(valType.Interface()))
}
}
switch objValue.Kind() {
case reflect.Map:
iter := objValue.MapRange()
for iter.Next() {
switch iter.Value().Kind() {
case reflect.Array, reflect.Slice:
for i := 0; i < iter.Value().Len(); i++ {
values.Add(fmt.Sprintf("%s[%s]", tag.ParamName, iter.Key().String()), valToString(iter.Value().Index(i).Interface()))
}
default:
values.Add(fmt.Sprintf("%s[%s]", tag.ParamName, iter.Key().String()), valToString(iter.Value().Interface()))
}
}
populateDeepObjectParamsMap(values, tag.ParamName, objValue)
case reflect.Struct:
populateDeepObjectParamsStruct(values, tag.ParamName, objValue)
}
return values
}
func populateDeepObjectParamsArray(qsValues url.Values, priorScope string, value reflect.Value) {
if value.Kind() != reflect.Array && value.Kind() != reflect.Slice {
return
}
for i := 0; i < value.Len(); i++ {
qsValues.Add(priorScope, valToString(value.Index(i).Interface()))
}
}
func populateDeepObjectParamsMap(qsValues url.Values, priorScope string, mapValue reflect.Value) {
if mapValue.Kind() != reflect.Map {
return
}
iter := mapValue.MapRange()
for iter.Next() {
scope := priorScope + "[" + iter.Key().String() + "]"
iterValue := iter.Value()
switch iterValue.Kind() {
case reflect.Array, reflect.Slice:
populateDeepObjectParamsArray(qsValues, scope, iterValue)
case reflect.Map:
populateDeepObjectParamsMap(qsValues, scope, iterValue)
default:
qsValues.Add(scope, valToString(iterValue.Interface()))
}
}
}
func populateDeepObjectParamsStruct(qsValues url.Values, priorScope string, structValue reflect.Value) {
if structValue.Kind() != reflect.Struct {
return
}
structType := structValue.Type()
for i := 0; i < structType.NumField(); i++ {
field := structType.Field(i)
fieldValue := structValue.Field(i)
if isNil(field.Type, fieldValue) {
continue
}
if fieldValue.Kind() == reflect.Pointer {
fieldValue = fieldValue.Elem()
}
qpTag := parseQueryParamTag(field)
if qpTag == nil {
continue
}
scope := priorScope + "[" + qpTag.ParamName + "]"
switch fieldValue.Kind() {
case reflect.Array, reflect.Slice:
populateDeepObjectParamsArray(qsValues, scope, fieldValue)
case reflect.Map:
populateDeepObjectParamsMap(qsValues, scope, fieldValue)
case reflect.Struct:
switch fieldValue.Type() {
case reflect.TypeOf(big.Int{}), reflect.TypeOf(decimal.Big{}), reflect.TypeOf(time.Time{}), reflect.TypeOf(types.Date{}):
qsValues.Add(scope, valToString(fieldValue.Interface()))
continue
}
populateDeepObjectParamsStruct(qsValues, scope, fieldValue)
default:
qsValues.Add(scope, valToString(fieldValue.Interface()))
}
}
}
func populateFormParams(tag *paramTag, objType reflect.Type, objValue reflect.Value, delimiter string) url.Values {
return populateForm(tag.ParamName, tag.Explode, objType, objValue, delimiter, func(fieldType reflect.StructField) string {
qpTag := parseQueryParamTag(fieldType)