Skip to content

JSON-RPC 1.0 support for clients #616

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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions