Class: Yookassa::Resources::Base Abstract

Inherits:
Object
  • Object
show all
Defined in:
lib/yookassa/resources/base.rb

Overview

This class is abstract.

Subclass and declare resource_path / entity_class

Base resource class with HTTP request handling and Faraday connection setup.

Subclasses declare resource_path and entity_class to inherit default create, find, and list behaviour. Resources that need custom logic (e.g. Payment) override those methods directly.

Direct Known Subclasses

Deal, Invoice, Payment, Payout, Receipt, Refund, Settings, Webhook

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(client) ⇒ Base



20
21
22
# File 'lib/yookassa/resources/base.rb', line 20

def initialize(client)
  @client = client
end

Instance Attribute Details

#clientClient (readonly)



17
18
19
# File 'lib/yookassa/resources/base.rb', line 17

def client
  @client
end

Class Method Details

.entity_class(klass = nil) ⇒ Class?

Declares or retrieves the entity class for wrapping API responses.



40
41
42
43
44
45
46
# File 'lib/yookassa/resources/base.rb', line 40

def self.entity_class(klass = nil)
  if klass
    @entity_class = klass
  else
    @entity_class
  end
end

.resource_path(path = nil) ⇒ String?

Declares or retrieves the API path for this resource.



28
29
30
31
32
33
34
# File 'lib/yookassa/resources/base.rb', line 28

def self.resource_path(path = nil)
  if path
    @resource_path = path
  else
    @resource_path
  end
end

Instance Method Details

#create(params, idempotency_key: nil) ⇒ Entities::Base

Creates a new resource via POST.

Raises:



54
55
56
57
# File 'lib/yookassa/resources/base.rb', line 54

def create(params, idempotency_key: nil)
  data = request(:post, resource_path, body: params, idempotency_key: idempotency_key)
  entity_class.new(data)
end

#find(resource_id) ⇒ Entities::Base

Retrieves a single resource by ID via GET.

Raises:



64
65
66
67
# File 'lib/yookassa/resources/base.rb', line 64

def find(resource_id)
  data = request(:get, "#{resource_path}/#{resource_id}")
  entity_class.new(data)
end

#list(**filters) ⇒ Entities::Collection

Lists resources matching the given filters via GET.



73
74
75
# File 'lib/yookassa/resources/base.rb', line 73

def list(**filters)
  build_collection(resource_path, entity_class: entity_class, query: filters)
end