111 lines
2.9 KiB
Go
111 lines
2.9 KiB
Go
package proxyproto
|
|
|
|
import "encoding/json"
|
|
|
|
type ResponseDecoder interface {
|
|
DecodeConnectResponse(data []byte) (*ConnectResponse, error)
|
|
DecodeRefreshResponse(data []byte) (*RefreshResponse, error)
|
|
DecodeRPCResponse(data []byte) (*RPCResponse, error)
|
|
DecodeSubscribeResponse(data []byte) (*SubscribeResponse, error)
|
|
DecodePublishResponse(data []byte) (*PublishResponse, error)
|
|
DecodeSubRefreshResponse(data []byte) (*SubRefreshResponse, error)
|
|
DecodeNotifyCacheEmptyResponse(data []byte) (*NotifyCacheEmptyResponse, error)
|
|
DecodeMapPublishResponse(data []byte) (*MapPublishResponse, error)
|
|
DecodeMapRemoveResponse(data []byte) (*MapRemoveResponse, error)
|
|
DecodeSharedPollRefreshResponse(data []byte) (*SharedPollRefreshResponse, error)
|
|
}
|
|
|
|
var _ ResponseDecoder = (*JSONDecoder)(nil)
|
|
|
|
type JSONDecoder struct{}
|
|
|
|
func (e *JSONDecoder) DecodeConnectResponse(data []byte) (*ConnectResponse, error) {
|
|
var resp ConnectResponse
|
|
err := json.Unmarshal(data, &resp)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &resp, nil
|
|
}
|
|
|
|
func (e *JSONDecoder) DecodeRefreshResponse(data []byte) (*RefreshResponse, error) {
|
|
var resp RefreshResponse
|
|
err := json.Unmarshal(data, &resp)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &resp, nil
|
|
}
|
|
|
|
func (e *JSONDecoder) DecodeRPCResponse(data []byte) (*RPCResponse, error) {
|
|
var resp RPCResponse
|
|
err := json.Unmarshal(data, &resp)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &resp, nil
|
|
}
|
|
|
|
func (e *JSONDecoder) DecodeSubscribeResponse(data []byte) (*SubscribeResponse, error) {
|
|
var resp SubscribeResponse
|
|
err := json.Unmarshal(data, &resp)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &resp, nil
|
|
}
|
|
|
|
func (e *JSONDecoder) DecodePublishResponse(data []byte) (*PublishResponse, error) {
|
|
var resp PublishResponse
|
|
err := json.Unmarshal(data, &resp)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &resp, nil
|
|
}
|
|
|
|
func (e *JSONDecoder) DecodeSubRefreshResponse(data []byte) (*SubRefreshResponse, error) {
|
|
var resp SubRefreshResponse
|
|
err := json.Unmarshal(data, &resp)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &resp, nil
|
|
}
|
|
|
|
func (e *JSONDecoder) DecodeNotifyCacheEmptyResponse(data []byte) (*NotifyCacheEmptyResponse, error) {
|
|
var resp NotifyCacheEmptyResponse
|
|
err := json.Unmarshal(data, &resp)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &resp, nil
|
|
}
|
|
|
|
func (e *JSONDecoder) DecodeMapPublishResponse(data []byte) (*MapPublishResponse, error) {
|
|
var resp MapPublishResponse
|
|
err := json.Unmarshal(data, &resp)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &resp, nil
|
|
}
|
|
|
|
func (e *JSONDecoder) DecodeMapRemoveResponse(data []byte) (*MapRemoveResponse, error) {
|
|
var resp MapRemoveResponse
|
|
err := json.Unmarshal(data, &resp)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &resp, nil
|
|
}
|
|
|
|
func (e *JSONDecoder) DecodeSharedPollRefreshResponse(data []byte) (*SharedPollRefreshResponse, error) {
|
|
var resp SharedPollRefreshResponse
|
|
err := json.Unmarshal(data, &resp)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &resp, nil
|
|
}
|