mirror of
https://github.com/sourcegraph/jsonrpc2.git
synced 2026-06-18 13:10:02 +02:00
Add a way to specify more non-standard-compliant fields to Request
This change introduces `ExtraField`, a `CallOption` that can add arbitrary fields to the top-level JSON-RPC Request message. Fixes: https://github.com/sourcegraph/jsonrpc2/issues/49
This commit is contained in:
parent
5cdc7d6ccd
commit
f987817f79
5 changed files with 123 additions and 16 deletions
|
|
@ -39,22 +39,27 @@ func TestAnyMessage(t *testing.T) {
|
|||
func TestRequest_MarshalUnmarshalJSON(t *testing.T) {
|
||||
null := json.RawMessage("null")
|
||||
obj := json.RawMessage(`{"foo":"bar"}`)
|
||||
requestFieldValue := json.RawMessage(`"session"`)
|
||||
tests := []struct {
|
||||
data []byte
|
||||
want Request
|
||||
}{
|
||||
{
|
||||
data: []byte(`{"method":"m","params":{"foo":"bar"},"id":123,"jsonrpc":"2.0"}`),
|
||||
data: []byte(`{"id":123,"jsonrpc":"2.0","method":"m","params":{"foo":"bar"}}`),
|
||||
want: Request{ID: ID{Num: 123}, Method: "m", Params: &obj},
|
||||
},
|
||||
{
|
||||
data: []byte(`{"method":"m","params":null,"id":123,"jsonrpc":"2.0"}`),
|
||||
data: []byte(`{"id":123,"jsonrpc":"2.0","method":"m","params":null}`),
|
||||
want: Request{ID: ID{Num: 123}, Method: "m", Params: &null},
|
||||
},
|
||||
{
|
||||
data: []byte(`{"method":"m","id":123,"jsonrpc":"2.0"}`),
|
||||
data: []byte(`{"id":123,"jsonrpc":"2.0","method":"m"}`),
|
||||
want: Request{ID: ID{Num: 123}, Method: "m", Params: nil},
|
||||
},
|
||||
{
|
||||
data: []byte(`{"id":123,"jsonrpc":"2.0","method":"m","sessionId":"session"}`),
|
||||
want: Request{ID: ID{Num: 123}, Method: "m", Params: nil, ExtraFields: []RequestField{{Name: "sessionId", Value: &requestFieldValue}}},
|
||||
},
|
||||
}
|
||||
for _, test := range tests {
|
||||
var got Request
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue