github.com/anthropics/anthropic-sdk-go@v1.70.1/internal/apiquery/query.go (about)

     1  package apiquery
     2  
     3  import (
     4  	"net/url"
     5  	"reflect"
     6  	"time"
     7  )
     8  
     9  func MarshalWithSettings(value any, settings QuerySettings) (url.Values, error) {
    10  	e := encoder{time.RFC3339, true, settings}
    11  	kv := url.Values{}
    12  	val := reflect.ValueOf(value)
    13  	if !val.IsValid() {
    14  		return nil, nil
    15  	}
    16  	typ := val.Type()
    17  
    18  	pairs, err := e.typeEncoder(typ)("", val)
    19  	if err != nil {
    20  		return nil, err
    21  	}
    22  	for _, pair := range pairs {
    23  		kv.Add(pair.key, pair.value)
    24  	}
    25  	return kv, nil
    26  }
    27  
    28  func Marshal(value any) (url.Values, error) {
    29  	return MarshalWithSettings(value, QuerySettings{})
    30  }
    31  
    32  type Queryer interface {
    33  	URLQuery() (url.Values, error)
    34  }
    35  
    36  type QuerySettings struct {
    37  	NestedFormat NestedQueryFormat
    38  	ArrayFormat  ArrayQueryFormat
    39  }
    40  
    41  type NestedQueryFormat int
    42  
    43  const (
    44  	NestedQueryFormatBrackets NestedQueryFormat = iota
    45  	NestedQueryFormatDots
    46  )
    47  
    48  type ArrayQueryFormat int
    49  
    50  const (
    51  	ArrayQueryFormatComma ArrayQueryFormat = iota
    52  	ArrayQueryFormatRepeat
    53  	ArrayQueryFormatIndices
    54  	ArrayQueryFormatBrackets
    55  )