Class: Apiwork::Adapter::Serializer::Error::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/apiwork/adapter/serializer/error/base.rb

Overview

Base class for error serializers.

Error serializers handle serialization of errors and define error-related types at the API level.

Examples:

class MyErrorSerializer < Serializer::Error::Base
  api_builder Builder::API

  def serialize(error, context:)
    { errors: error.issues.map(&:to_h) }
  end
end

Direct Known Subclasses

Default

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.api_builder(klass = nil) ⇒ Class<Builder::API::Base>?

The API builder for this serializer.

Parameters:

Returns:



44
45
46
47
# File 'lib/apiwork/adapter/serializer/error/base.rb', line 44

def api_builder(klass = nil)
  @api_builder = klass if klass
  @api_builder
end

.data_type(name = nil) ⇒ Symbol?

The data type for this serializer.

Parameters:

  • name (Symbol, nil) (defaults to: nil)

    (nil) The type name.

Returns:

  • (Symbol, nil)


33
34
35
36
# File 'lib/apiwork/adapter/serializer/error/base.rb', line 33

def data_type(name = nil)
  @data_type = name if name
  @data_type
end

.serialize(error, context:) ⇒ Object



23
24
25
# File 'lib/apiwork/adapter/serializer/error/base.rb', line 23

def serialize(error, context:)
  new.serialize(error, context:)
end

Instance Method Details

#api_types(api_class) ⇒ Object



50
51
52
53
54
55
# File 'lib/apiwork/adapter/serializer/error/base.rb', line 50

def api_types(api_class)
  builder_class = self.class.api_builder
  return unless builder_class

  builder_class.new(api_class, data_type: self.class.data_type).build
end

#serialize(error, context:) ⇒ Hash

Serializes an error.

Parameters:

  • error (Error)

    The error to serialize.

  • context (Hash)

    The serialization context.

Returns:

  • (Hash)

Raises:

  • (NotImplementedError)


65
66
67
# File 'lib/apiwork/adapter/serializer/error/base.rb', line 65

def serialize(error, context:)
  raise NotImplementedError
end