Class: A2A::JsonRpc::Response

Inherits:
Object
  • Object
show all
Defined in:
lib/simple_a2a/json_rpc.rb

Class Method Summary collapse

Class Method Details

.classify(error) ⇒ Object



66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/simple_a2a/json_rpc.rb', line 66

def self.classify(error)
  case error
  when TaskNotFoundError          then [ErrorCode::TASK_NOT_FOUND,       error.message || "Task not found"]
  when TaskNotCancelableError     then [ErrorCode::TASK_NOT_CANCELABLE,   error.message || "Task not cancelable"]
  when PushNotificationNotSupportedError then [ErrorCode::PUSH_NOT_SUPPORTED, error.message || "Push notifications not supported"]
  when UnsupportedOperationError  then [ErrorCode::UNSUPPORTED_OPERATION, error.message || "Unsupported operation"]
  when ContentTypeNotSupportedError then [ErrorCode::CONTENT_TYPE_NOT_SUPPORTED, error.message || "Content type not supported"]
  when InvalidAgentResponseError  then [ErrorCode::INVALID_AGENT_RESPONSE, error.message || "Invalid agent response"]
  when ExtensionSupportRequiredError then [ErrorCode::EXTENSION_REQUIRED, error.message || "Extension required"]
  when VersionNotSupportedError   then [ErrorCode::VERSION_NOT_SUPPORTED, error.message || "Version not supported"]
  when ParseError                 then [ErrorCode::PARSE_ERROR,           error.message || "Parse error"]
  when InvalidRequestError        then [ErrorCode::INVALID_REQUEST,       error.message || "Invalid request"]
  when InvalidParamsError         then [ErrorCode::INVALID_PARAMS,        error.message || "Invalid params"]
  else                                 [ErrorCode::INTERNAL_ERROR,        error.message || "Internal error"]
  end
end

.error(id:, code:, message:, data: nil) ⇒ Object



55
56
57
58
59
# File 'lib/simple_a2a/json_rpc.rb', line 55

def self.error(id:, code:, message:, data: nil)
  err = { "code" => code, "message" => message }
  err["data"] = data if data
  JSON.generate({ "jsonrpc" => "2.0", "id" => id, "error" => err })
end

.from_error(id:, error:) ⇒ Object



61
62
63
64
# File 'lib/simple_a2a/json_rpc.rb', line 61

def self.from_error(id:, error:)
  code, msg = classify(error)
  error(id: id, code: code, message: msg)
end

.success(id:, result:) ⇒ Object



51
52
53
# File 'lib/simple_a2a/json_rpc.rb', line 51

def self.success(id:, result:)
  JSON.generate({ "jsonrpc" => "2.0", "id" => id, "result" => result })
end