mirror of
https://github.com/ipfs/kubo.git
synced 2025-07-01 02:30:39 +08:00
commands: Added marshalling to Response
This commit is contained in:

committed by
Juan Batiz-Benet

parent
95b0dd29f8
commit
a3a843759b
@ -1,5 +1,12 @@
|
||||
package commands
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
"encoding/json"
|
||||
"encoding/xml"
|
||||
)
|
||||
|
||||
type ErrorType uint
|
||||
const (
|
||||
Normal ErrorType = iota // general errors
|
||||
@ -13,6 +20,19 @@ type Error struct {
|
||||
code ErrorType
|
||||
}
|
||||
|
||||
type EncodingType string
|
||||
const (
|
||||
Json = "json"
|
||||
Xml = "xml"
|
||||
// TODO: support more encoding types
|
||||
)
|
||||
|
||||
type Marshaller func(v interface{})([]byte, error)
|
||||
var marshallers = map[EncodingType]Marshaller{
|
||||
Json: json.Marshal,
|
||||
Xml: xml.Marshal,
|
||||
}
|
||||
|
||||
type Response struct {
|
||||
req *Request
|
||||
Error error
|
||||
@ -29,6 +49,17 @@ func (r *Response) FormatError() Error {
|
||||
return Error{ r.Error.Error(), r.ErrorType }
|
||||
}
|
||||
|
||||
/*func (r *Response) Encode() ([]byte, error) {
|
||||
func (r *Response) Marshal() ([]byte, error) {
|
||||
enc := r.req.Option("enc")
|
||||
if enc == nil {
|
||||
return nil, fmt.Errorf("No encoding type was specified")
|
||||
}
|
||||
encType := EncodingType(strings.ToLower(enc.(string)))
|
||||
|
||||
}*/
|
||||
marshaller, ok := marshallers[encType]
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("No marshaller found for encoding type '%s'", enc)
|
||||
}
|
||||
|
||||
return marshaller(r.Value)
|
||||
}
|
||||
|
Reference in New Issue
Block a user