Module: Manceps::JsonRpc
- Defined in:
- lib/manceps/json_rpc.rb
Overview
JSON-RPC 2.0 message construction helpers.
Class Method Summary collapse
- .initialize_request(id, client_info: nil, capabilities: {}) ⇒ Object
- .initialized_notification ⇒ Object
- .notification(method, params = {}) ⇒ Object
- .parse_response(data) ⇒ Object
- .request(id, method, params = {}) ⇒ Object
- .response(id, result) ⇒ Object
Class Method Details
.initialize_request(id, client_info: nil, capabilities: {}) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/manceps/json_rpc.rb', line 18 def initialize_request(id, client_info: nil, capabilities: {}) config = Manceps.configuration info = client_info || { name: config.client_name, version: config.client_version } info[:description] = config.client_description if config.client_description request(id, 'initialize', { protocolVersion: config.protocol_version, capabilities: capabilities, clientInfo: info }) end |
.initialized_notification ⇒ Object
34 35 36 |
# File 'lib/manceps/json_rpc.rb', line 34 def initialized_notification notification('notifications/initialized') end |
.notification(method, params = {}) ⇒ Object
14 15 16 |
# File 'lib/manceps/json_rpc.rb', line 14 def notification(method, params = {}) { jsonrpc: '2.0', method: method, params: params } end |
.parse_response(data) ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/manceps/json_rpc.rb', line 38 def parse_response(data) data = JSON.parse(data, symbolize_names: true) if data.is_a?(String) raise ProtocolError, "Invalid JSON-RPC version: #{data[:jsonrpc]}" unless data[:jsonrpc] == '2.0' if data[:error] err = data[:error] raise ProtocolError.new( err[:message] || 'Unknown error', code: err[:code], data: err[:data] ) end data end |
.request(id, method, params = {}) ⇒ Object
10 11 12 |
# File 'lib/manceps/json_rpc.rb', line 10 def request(id, method, params = {}) { jsonrpc: '2.0', id: id, method: method, params: params } end |
.response(id, result) ⇒ Object
30 31 32 |
# File 'lib/manceps/json_rpc.rb', line 30 def response(id, result) { jsonrpc: '2.0', id: id, result: result } end |