Module: Manceps::JsonRpc

Defined in:
lib/manceps/json_rpc.rb

Overview

JSON-RPC 2.0 message construction helpers.

Class Method Summary collapse

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_notificationObject



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

Raises:



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