class Postwill::Client

Constants

PROVIDERS

Public Class Methods

new(data) click to toggle source
# File lib/postwill/client.rb, line 5
def initialize(data)
  instance_providers(data)
end

Public Instance Methods

to(providers, options = {}) click to toggle source
# File lib/postwill/client.rb, line 9
def to(providers, options = {})
  availables_providers(providers).each_with_object({}) do |provider, result|
    provider_service = instance_variable_get("@#{provider}")
    result[provider] = response(provider_service.call(options))
  end
end

Private Instance Methods

availables_providers(*providers) click to toggle source
# File lib/postwill/client.rb, line 18
def availables_providers(*providers)
  providers.flatten.map { |provider| PROVIDERS.include?(provider) ? provider : nil }.compact
end
instance_providers(data) click to toggle source
# File lib/postwill/client.rb, line 27
def instance_providers(data)
  PROVIDERS.each do |provider|
    next unless data[provider]

    instance_variable_set("@#{provider}", Object.const_get(['Postwill::Providers::',
                                                            provider.to_s.capitalize].join)
                                                            .new(data[provider]))
  end
end
response(result) click to toggle source
# File lib/postwill/client.rb, line 22
def response(result)
  return Response.call(:ok, result.value) if result.success?
  Response.call(:error, result.value.message)
end