1
0
Fork 0
mirror of https://github.com/diamondburned/arikawa.git synced 2024-11-04 22:14:30 +00:00
arikawa/internal/httputil/schema.go

32 lines
549 B
Go
Raw Normal View History

2020-01-06 03:48:39 +00:00
package httputil
import (
"net/url"
"sync"
"github.com/gorilla/schema"
)
// SchemaEncoder expects the encoder to read the "schema" tags.
type SchemaEncoder interface {
Encode(src interface{}) (url.Values, error)
}
type DefaultSchema struct {
once sync.Once
*schema.Encoder
}
var _ SchemaEncoder = (*DefaultSchema)(nil)
func (d *DefaultSchema) Encode(src interface{}) (url.Values, error) {
if d.Encoder == nil {
d.once.Do(func() {
d.Encoder = schema.NewEncoder()
})
}
var v = url.Values{}
return v, d.Encoder.Encode(src, v)
}