github.com/diamondburned/arikawa/v2@v2.1.0/utils/httputil/schema.go (about) 1 package httputil 2 3 import ( 4 "net/url" 5 "sync" 6 7 "github.com/gorilla/schema" 8 ) 9 10 // SchemaEncoder expects the encoder to read the "schema" tags. 11 type SchemaEncoder interface { 12 Encode(src interface{}) (url.Values, error) 13 } 14 15 type DefaultSchema struct { 16 once sync.Once 17 *schema.Encoder 18 } 19 20 var _ SchemaEncoder = (*DefaultSchema)(nil) 21 22 func (d *DefaultSchema) Encode(src interface{}) (url.Values, error) { 23 if d.Encoder == nil { 24 d.once.Do(func() { 25 d.Encoder = schema.NewEncoder() 26 }) 27 } 28 29 var v = url.Values{} 30 return v, d.Encoder.Encode(src, v) 31 }