X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/6c000544072fb0be012dafeea5761fa9e0744ee4..a8bbdb54d006f157a009ece0cae5bf72fb636ced:/src/main/java/org/asamk/signal/jsonrpc/JsonRpcRequest.java diff --git a/src/main/java/org/asamk/signal/jsonrpc/JsonRpcRequest.java b/src/main/java/org/asamk/signal/jsonrpc/JsonRpcRequest.java new file mode 100644 index 00000000..1ae8552a --- /dev/null +++ b/src/main/java/org/asamk/signal/jsonrpc/JsonRpcRequest.java @@ -0,0 +1,73 @@ +package org.asamk.signal.jsonrpc; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.databind.node.ContainerNode; +import com.fasterxml.jackson.databind.node.ValueNode; + +/** + * Represents a JSON-RPC request. + * https://www.jsonrpc.org/specification#request_object + */ +public class JsonRpcRequest extends JsonRpcMessage { + + /** + * A String specifying the version of the JSON-RPC protocol. MUST be exactly "2.0". + */ + String jsonrpc; + + /** + * A String containing the name of the method to be invoked. + * Method names that begin with the word rpc followed by a period character (U+002E or ASCII 46) + * are reserved for rpc-internal methods and extensions and MUST NOT be used for anything else. + */ + String method; + + /** + * A Structured value that holds the parameter values to be used during the invocation of the method. + * This member MAY be omitted. + */ + @JsonInclude(JsonInclude.Include.NON_NULL) + ContainerNode params; + + /** + * An identifier established by the Client that MUST contain a String, Number, or NULL value if included. + * If it is not included it is assumed to be a notification. + * The value SHOULD normally not be Null and Numbers SHOULD NOT contain fractional parts + */ + @JsonInclude(JsonInclude.Include.NON_NULL) + ValueNode id; + + public static JsonRpcRequest forNotification( + final String method, final ContainerNode params, final ValueNode id + ) { + return new JsonRpcRequest("2.0", method, params, id); + } + + private JsonRpcRequest() { + } + + private JsonRpcRequest( + final String jsonrpc, final String method, final ContainerNode params, final ValueNode id + ) { + this.jsonrpc = jsonrpc; + this.method = method; + this.params = params; + this.id = id; + } + + public String getJsonrpc() { + return jsonrpc; + } + + public String getMethod() { + return method; + } + + public ContainerNode getParams() { + return params; + } + + public ValueNode getId() { + return id; + } +}