gtsocial-umbx

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

yaml.go (683B)


      1 // Copyright 2018 Gin Core Team. All rights reserved.
      2 // Use of this source code is governed by a MIT style
      3 // license that can be found in the LICENSE file.
      4 
      5 package binding
      6 
      7 import (
      8 	"bytes"
      9 	"io"
     10 	"net/http"
     11 
     12 	"gopkg.in/yaml.v3"
     13 )
     14 
     15 type yamlBinding struct{}
     16 
     17 func (yamlBinding) Name() string {
     18 	return "yaml"
     19 }
     20 
     21 func (yamlBinding) Bind(req *http.Request, obj any) error {
     22 	return decodeYAML(req.Body, obj)
     23 }
     24 
     25 func (yamlBinding) BindBody(body []byte, obj any) error {
     26 	return decodeYAML(bytes.NewReader(body), obj)
     27 }
     28 
     29 func decodeYAML(r io.Reader, obj any) error {
     30 	decoder := yaml.NewDecoder(r)
     31 	if err := decoder.Decode(obj); err != nil {
     32 		return err
     33 	}
     34 	return validate(obj)
     35 }