Class: SimpleAcp::Models::Error

Inherits:
Object
  • Object
show all
Defined in:
lib/simple_acp/models/errors.rb

Overview

Structured error response following the ACP specification.

Examples:

Creating an error

error = Error.server_error("Something went wrong")
error.code    # => "server_error"
error.message # => "Something went wrong"

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(code:, message:, data: nil) ⇒ Error

Create a new error.

Parameters:

  • code (String) —

    error code

  • message (String) —

    error message

  • data (Object, nil) (defaults to: nil) —

    additional data



36
37
38
39
40
# File 'lib/simple_acp/models/errors.rb', line 36

def initialize(code:, message:, data: nil)
  @code = code
  @message = message
  @data = data
end

Instance Attribute Details

#code ⇒ String (readonly)

Returns error code (server_error, invalid_input, not_found).

Returns:

  • (String) —

    error code (server_error, invalid_input, not_found)



23
24
25
# File 'lib/simple_acp/models/errors.rb', line 23

def code
  @code
end

#data ⇒ Object? (readonly)

Returns additional error data.

Returns:

  • (Object, nil) —

    additional error data



29
30
31
# File 'lib/simple_acp/models/errors.rb', line 29

def data
  @data
end

#message ⇒ String (readonly)

Returns human-readable error message.

Returns:

  • (String) —

    human-readable error message



26
27
28
# File 'lib/simple_acp/models/errors.rb', line 26

def message
  @message
end

Class Method Details

.from_hash(hash) ⇒ Error

Create from a hash (JSON deserialization).

Parameters:

  • hash (Hash) —

    error data

Returns:



66
67
68
69
70
71
72
# File 'lib/simple_acp/models/errors.rb', line 66

def self.from_hash(hash)
  new(
    code: hash["code"] || hash[:code],
    message: hash["message"] || hash[:message],
    data: hash["data"] || hash[:data]
  )
end

.invalid_input(message, data: nil) ⇒ Error

Create an invalid input error.

Parameters:

  • message (String) —

    error message

  • data (Object, nil) (defaults to: nil) —

    additional data

Returns:



88
89
90
# File 'lib/simple_acp/models/errors.rb', line 88

def self.invalid_input(message, data: nil)
  new(code: ErrorCode::INVALID_INPUT, message: message, data: data)
end

.not_found(message, data: nil) ⇒ Error

Create a not found error.

Parameters:

  • message (String) —

    error message

  • data (Object, nil) (defaults to: nil) —

    additional data

Returns:



97
98
99
# File 'lib/simple_acp/models/errors.rb', line 97

def self.not_found(message, data: nil)
  new(code: ErrorCode::NOT_FOUND, message: message, data: data)
end

.server_error(message, data: nil) ⇒ Error

Create a server error.

Parameters:

  • message (String) —

    error message

  • data (Object, nil) (defaults to: nil) —

    additional data

Returns:



79
80
81
# File 'lib/simple_acp/models/errors.rb', line 79

def self.server_error(message, data: nil)
  new(code: ErrorCode::SERVER_ERROR, message: message, data: data)
end

Instance Method Details

#to_h ⇒ Hash

Convert to hash for JSON serialization.

Returns:

  • (Hash) —

    error as hash



45
46
47
48
49
50
51
52
# File 'lib/simple_acp/models/errors.rb', line 45

def to_h
  hash = {
    code: @code,
    message: @message
  }
  hash[:data] = @data if @data
  hash
end

#to_json(*args) ⇒ String

Convert to JSON string.

Parameters:

  • args (Array) —

    arguments passed to Hash#to_json

Returns:

  • (String) —

    JSON representation



58
59
60
# File 'lib/simple_acp/models/errors.rb', line 58

def to_json(*args)
  to_h.to_json(*args)
end