bf51655a7b
Signed-off-by: Jacek J. Łakis <jacek.lakis@intel.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
34 lines
1.1 KiB
Go
34 lines
1.1 KiB
Go
package restPack
|
|
|
|
import (
|
|
restful "github.com/emicklei/go-restful"
|
|
"gopkg.in/vmihailenco/msgpack.v2"
|
|
)
|
|
|
|
const MIME_MSGPACK = "application/x-msgpack" // Accept or Content-Type used in Consumes() and/or Produces()
|
|
|
|
// NewEntityAccessorMPack returns a new EntityReaderWriter for accessing MessagePack content.
|
|
// This package is not initialized with such an accessor using the MIME_MSGPACK contentType.
|
|
func NewEntityAccessorMsgPack() restful.EntityReaderWriter {
|
|
return entityMsgPackAccess{}
|
|
}
|
|
|
|
// entityOctetAccess is a EntityReaderWriter for Octet encoding
|
|
type entityMsgPackAccess struct {
|
|
}
|
|
|
|
// Read unmarshalls the value from byte slice and using msgpack to unmarshal
|
|
func (e entityMsgPackAccess) Read(req *restful.Request, v interface{}) error {
|
|
return msgpack.NewDecoder(req.Request.Body).Decode(v)
|
|
}
|
|
|
|
// Write marshals the value to byte slice and set the Content-Type Header.
|
|
func (e entityMsgPackAccess) Write(resp *restful.Response, status int, v interface{}) error {
|
|
if v == nil {
|
|
resp.WriteHeader(status)
|
|
// do not write a nil representation
|
|
return nil
|
|
}
|
|
resp.WriteHeader(status)
|
|
return msgpack.NewEncoder(resp).Encode(v)
|
|
}
|