module Eezee::Client::Builder

Public Class Methods

extended(base) click to toggle source
# File lib/eezee/client/builder.rb, line 8
def self.extended(base)
  base.send(:build_eezee_options)
  base.send(:build_eezee_request_attributes)
  base.eezee_options
end

Public Instance Methods

eezee_request_options(options) click to toggle source
# File lib/eezee/client/builder.rb, line 14
def eezee_request_options(options)
  build_eezee_request_options(options)
end
eezee_service(name, options = {}) click to toggle source
# File lib/eezee/client/builder.rb, line 18
def eezee_service(name, options = {})
  build_eezee_service(name, { lazy: false }.merge(options || {}))
end

Private Instance Methods

build_eezee_options() click to toggle source
# File lib/eezee/client/builder.rb, line 24
def build_eezee_options
  define_singleton_method(:eezee_options) { @eezee_options ||= {} }
end
build_eezee_request(force = false) click to toggle source
# File lib/eezee/client/builder.rb, line 39
def build_eezee_request(force = false)
  Eezee.configuration
       .find_service(eezee_options[:service_name])
       .then { |service| handle_unknown_service!(service, force) }
       .then { |service| create_request(service, force) }
       .then { |request| eezee_options[:request] = request }
       .then { build_eezee_request_attributes }
end
build_eezee_request_attributes() click to toggle source
# File lib/eezee/client/builder.rb, line 48
def build_eezee_request_attributes
  define_singleton_method(:eezee_request_attributes) { eezee_options&.[](:request)&.attributes || {} }
end
build_eezee_request_options(options = {}) click to toggle source
# File lib/eezee/client/builder.rb, line 28
def build_eezee_request_options(options = {})
  eezee_options[:request_options] ||= options
  build_eezee_request
end
build_eezee_service(name = nil, options = {}) click to toggle source
# File lib/eezee/client/builder.rb, line 33
def build_eezee_service(name = nil, options = {})
  eezee_options[:service_name] ||= name
  eezee_options[:service_options] ||= options
  build_eezee_request
end
create_request(service, force) click to toggle source
# File lib/eezee/client/builder.rb, line 63
def create_request(service, force)
  return unless take_request?(force)

  Eezee.configuration.request_by(service, eezee_options[:request_options])
end
handle_unknown_service!(service, force) click to toggle source
# File lib/eezee/client/builder.rb, line 52
def handle_unknown_service!(service, force)
  return unless take_request?(force)
  raise UnknownServiceError if !service && eezee_options[:service_name]

  service
end
take_request?(force) click to toggle source
# File lib/eezee/client/builder.rb, line 59
def take_request?(force)
  !eezee_options.dig(:service_options, :lazy) || force
end