mirror of
https://github.com/sourcegraph/jsonrpc2.git
synced 2026-06-16 04:04:56 +02:00
Always omit params member from request when empty (#67)
With this commit, the JSON encoding of `Request` always omits the params
member when calling `Conn.Call`, `Conn.DispatchCall`, or `Conn.Notify`
with the `params` argument set to `nil`. This change also removes the
`OmitNilParams` call option that was added in commit 8012d496 (#62).
As of this commit, if users desire to send a JSON-RPC request with a
`params` value of `null`, then they may do so by explicitly setting the
`params` argument of `Conn.Call`/`Conn.DispatchCall`/`Conn.Notify` to
`json.RawMessage("null")`.
This commit is contained in:
parent
6864d8cc6d
commit
ae88a5e7c0
10 changed files with 240 additions and 159 deletions
78
example_test.go
Normal file
78
example_test.go
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
package jsonrpc2_test
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net"
|
||||
"os"
|
||||
|
||||
"github.com/sourcegraph/jsonrpc2"
|
||||
)
|
||||
|
||||
// Send a JSON-RPC notification with its params member omitted.
|
||||
func ExampleConn_Notify_paramsOmitted() {
|
||||
ctx := context.Background()
|
||||
|
||||
connA, connB := net.Pipe()
|
||||
defer connA.Close()
|
||||
defer connB.Close()
|
||||
|
||||
rpcConn := jsonrpc2.NewConn(ctx, jsonrpc2.NewPlainObjectStream(connA), nil)
|
||||
|
||||
// Send the JSON-RPC notification.
|
||||
go func() {
|
||||
// Set params to nil.
|
||||
if err := rpcConn.Notify(ctx, "foo", nil); err != nil {
|
||||
fmt.Fprintln(os.Stderr, "notify:", err)
|
||||
}
|
||||
}()
|
||||
|
||||
// Read the raw JSON-RPC notification on connB.
|
||||
//
|
||||
// Reading the raw JSON-RPC request is for the purpose of this example only.
|
||||
// Use a jsonrpc2.Handler to read parsed requests.
|
||||
buf := make([]byte, 64)
|
||||
n, err := connB.Read(buf)
|
||||
if err != nil {
|
||||
fmt.Fprintln(os.Stderr, "read:", err)
|
||||
}
|
||||
|
||||
fmt.Printf("%s\n", buf[:n])
|
||||
|
||||
// Output: {"jsonrpc":"2.0","method":"foo"}
|
||||
}
|
||||
|
||||
// Send a JSON-RPC notification with its params member set to null.
|
||||
func ExampleConn_Notify_nullParams() {
|
||||
ctx := context.Background()
|
||||
|
||||
connA, connB := net.Pipe()
|
||||
defer connA.Close()
|
||||
defer connB.Close()
|
||||
|
||||
rpcConn := jsonrpc2.NewConn(ctx, jsonrpc2.NewPlainObjectStream(connA), nil)
|
||||
|
||||
// Send the JSON-RPC notification.
|
||||
go func() {
|
||||
// Set params to the JSON null value.
|
||||
params := json.RawMessage("null")
|
||||
if err := rpcConn.Notify(ctx, "foo", params); err != nil {
|
||||
fmt.Fprintln(os.Stderr, "notify:", err)
|
||||
}
|
||||
}()
|
||||
|
||||
// Read the raw JSON-RPC notification on connB.
|
||||
//
|
||||
// Reading the raw JSON-RPC request is for the purpose of this example only.
|
||||
// Use a jsonrpc2.Handler to read parsed requests.
|
||||
buf := make([]byte, 64)
|
||||
n, err := connB.Read(buf)
|
||||
if err != nil {
|
||||
fmt.Fprintln(os.Stderr, "read:", err)
|
||||
}
|
||||
|
||||
fmt.Printf("%s\n", buf[:n])
|
||||
|
||||
// Output: {"jsonrpc":"2.0","method":"foo","params":null}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue