use crate::lsp::protocol::{JsonRpcErrorObject, JsonRpcResponse};
use serde_json::Value;
pub const JSONRPC_VERSION: &str = "2.0";
pub mod error_codes {
pub const METHOD_NOT_FOUND: i32 = -32601;
}
pub fn success_response(id: Value, result: Value) -> JsonRpcResponse {
JsonRpcResponse {
jsonrpc: JSONRPC_VERSION.to_string(),
id,
result: Some(result),
error: None,
}
}
pub fn error_response(
id: Value,
code: i32,
message: String,
data: Option<Value>,
) -> JsonRpcResponse {
JsonRpcResponse {
jsonrpc: JSONRPC_VERSION.to_string(),
id,
result: None,
error: Some(JsonRpcErrorObject {
code,
message,
data,
}),
}
}
pub fn method_not_found_response(id: Value, method: &str) -> JsonRpcResponse {
error_response(
id,
error_codes::METHOD_NOT_FOUND,
format!("Method not found: {}", method),
None,
)
}
pub fn null_success_response(id: Value) -> JsonRpcResponse {
success_response(id, Value::Null)
}