module Katinguele::Client::Builder

Public Class Methods

extended(base) click to toggle source
# File lib/katinguele/client/builder.rb, line 8
def self.extended(base)
  base.send(:build_katinguele_options)
  base.send(:build_katinguele_request_attributes)
  base.katinguele_options
end

Public Instance Methods

katinguele_request_options(options) click to toggle source
# File lib/katinguele/client/builder.rb, line 14
def katinguele_request_options(options)
  build_katinguele_request_options(options)
end
katinguele_service(name, options = {}) click to toggle source
# File lib/katinguele/client/builder.rb, line 18
def katinguele_service(name, options = {})
  build_katinguele_service(name, { lazy: false }.merge(options || {}))
end

Private Instance Methods

build_katinguele_options() click to toggle source
# File lib/katinguele/client/builder.rb, line 24
def build_katinguele_options
  define_singleton_method(:katinguele_options) { @katinguele_options ||= {} }
end
build_katinguele_request(force = false) click to toggle source
# File lib/katinguele/client/builder.rb, line 39
def build_katinguele_request(force = false)
  Katinguele.configuration
            .find_service(katinguele_options[:service_name])
            .then { |service| handle_unknown_service!(service, force) }
            .then { |service| create_request(service, force) }
            .then { |request| katinguele_options[:request] = request }
            .then { build_katinguele_request_attributes }
end
build_katinguele_request_attributes() click to toggle source
# File lib/katinguele/client/builder.rb, line 48
def build_katinguele_request_attributes
  define_singleton_method(:katinguele_request_attributes) { katinguele_options&.[](:request)&.attributes || {} }
end
build_katinguele_request_options(options = {}) click to toggle source
# File lib/katinguele/client/builder.rb, line 28
def build_katinguele_request_options(options = {})
  katinguele_options[:request_options] ||= options
  build_katinguele_request
end
build_katinguele_service(name = nil, options = {}) click to toggle source
# File lib/katinguele/client/builder.rb, line 33
def build_katinguele_service(name = nil, options = {})
  katinguele_options[:service_name] ||= name
  katinguele_options[:service_options] ||= options
  build_katinguele_request
end
create_request(service, force) click to toggle source
# File lib/katinguele/client/builder.rb, line 63
def create_request(service, force)
  return unless take_request?(force)

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

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