Module: Ask::MCP::Native::Messages::Parser
- Defined in:
- lib/ask/mcp/native/messages.rb
Class Method Summary collapse
- .parse(json_string) ⇒ Object
- .parse_request(json_string) ⇒ Object
- .parse_response(json_string) ⇒ Object
Class Method Details
.parse(json_string) ⇒ Object
89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
# File 'lib/ask/mcp/native/messages.rb', line 89 def self.parse(json_string) data = JSON.parse(json_string, symbolize_names: true) return data unless data.is_a?(Hash) if data.key?(:id) && (data.key?(:result) || data.key?(:error)) Response.new( id: data[:id], result: data[:result], error: data[:error] ) elsif data.key?(:method) && data.key?(:id) Request.new( method: data[:method], params: data[:params], id: data[:id] ) elsif data.key?(:method) && !data.key?(:id) Notification.new( method: data[:method], params: data[:params] ) else data end end |
.parse_request(json_string) ⇒ Object
121 122 123 124 125 |
# File 'lib/ask/mcp/native/messages.rb', line 121 def self.parse_request(json_string) msg = parse(json_string) raise ProtocolError, "Expected a Request, got #{msg.class}" unless msg.is_a?(Request) msg end |
.parse_response(json_string) ⇒ Object
115 116 117 118 119 |
# File 'lib/ask/mcp/native/messages.rb', line 115 def self.parse_response(json_string) msg = parse(json_string) raise ProtocolError, "Expected a Response, got #{msg.class}" unless msg.is_a?(Response) msg end |