Base
Base class for adapter capabilities.
A capability encapsulates a specific feature (filtering, pagination, sorting) with its own configuration, transformers, builders, and operations. While each capability is self-contained, all capabilities operate on the same response data in sequence, so their effects combine.
Example: Filtering capability
class Filtering < Adapter::Capability::Base
capability_name :filtering
option :strategy, type: :symbol, default: :simple
request_transformer RequestTransformer
api_builder APIBuilder
contract_builder ContractBuilder
operation Operation
endClass Methods
.api_builder
.api_builder(klass = nil, &block)
Registers an API builder for this capability.
API builders run once per API at initialization time to register shared types used across all contracts.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
klass | Class<Builder::API::Base>, nil | nil | The builder class. |
Returns
void
See also
.capability_name
.capability_name(value = nil)
The name for this capability.
Used for configuration options, translation keys, and Adapter::Base.skip_capability.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
value | Symbol, nil | nil | The capability name. |
Returns
Symbol, nil
.contract_builder
.contract_builder(klass = nil, &block)
Registers a contract builder for this capability.
Contract builders run per contract to add capability-specific parameters and response shapes.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
klass | Class<Builder::Contract::Base>, nil | nil | The builder class. |
Returns
void
See also
.operation
.operation(klass = nil, &block)
Registers an operation for this capability.
Operations run at request time to process data based on request parameters.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
klass | Class<Operation::Base>, nil | nil | The operation class. |
Returns
void
See also
.option
.option(name, type:, default: nil, enum: nil, &block)
Defines a configuration option.
For nested options, use type: :hash with a block. Inside the block, call option to define child options.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
name | Symbol | The option name. | |
type | Symbol<:boolean, :hash, :integer, :string, :symbol> | The option type. | |
default | Object, nil | nil | The default value. |
enum | Array, nil | nil | The allowed values. |
Returns
void
See also
Example: Symbol option
option :locale, type: :symbol, default: :enExample: String option with enum
option :version, type: :string, default: '5', enum: %w[4 5]Example: Nested options
option :pagination, type: :hash do
option :strategy, type: :symbol, default: :offset, enum: %i[offset cursor]
option :default_size, type: :integer, default: 20
option :max_size, type: :integer, default: 100
end.request_transformer
.request_transformer(transformer_class)
Registers a request transformer for this capability.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
transformer_class | Class<Transformer::Request::Base> | The transformer class. |
Returns
void
See also
.response_transformer
.response_transformer(transformer_class)
Registers a response transformer for this capability.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
transformer_class | Class<Transformer::Response::Base> | The transformer class. |
Returns
void
See also