Skip to content

JSON-RPC 1.0 support for clients #616

Open
@ivan770

Description

@ivan770

Is it possible for JSON-RPC clients to use 1.0 scheme instead of 2.0? Looks like currently successful and error responses are separate entities, and there is no configuration for Compatibility (like in IoHandler).

/// A type representing all possible values sent from the server to the client.
#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
#[serde(deny_unknown_fields)]
#[serde(untagged)]
pub enum ClientResponse {
/// A regular JSON-RPC request output (single response).
Output(jsonrpc_core::Output),
/// A notification.
Notification(jsonrpc_core::Notification),
}

/// Successful response
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct Success {
/// Protocol version
#[serde(skip_serializing_if = "Option::is_none")]
pub jsonrpc: Option<Version>,
/// Result
pub result: Value,
/// Correlation id
pub id: Id,
}
/// Unsuccessful response
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct Failure {
/// Protocol Version
#[serde(skip_serializing_if = "Option::is_none")]
pub jsonrpc: Option<Version>,
/// Error
pub error: Error,
/// Correlation id
pub id: Id,
}
/// Represents output - failure or success
#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
#[serde(deny_unknown_fields)]
#[serde(untagged)]
pub enum Output {
/// Success
Success(Success),
/// Failure
Failure(Failure),
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions