Sha256: 2ba8fece8e7d3be8248642a6e860fb90e71877934beb0f78b50bcd53448d7918
Contents?: true
Size: 1.77 KB
Versions: 5
Compression:
Stored size: 1.77 KB
Contents
require "fex/service" require "fex/response" require "fex/ship_response" module Fex class ServiceFactory PRODUCTION_ENDPOINT = "https://ws.fedex.com:443/web-services/rate" attr_reader :name, :mode, :client_options, :version, :defaults, :wsdl, :response # credentials attr_reader :key, :password, :account_number, :meter_number def initialize(name, options) @name = name @mode = options.fetch(:mode) { "test" } @version = options.fetch(:version) {{}} @client_options = options.fetch(:client) {{}} @defaults = options.fetch(:defaults) {{}} @credentials = options.fetch(:credentials) @key = @credentials.fetch(:key) @password = @credentials.fetch(:password) @account_number = @credentials.fetch(:account_number) @meter_number = @credentials.fetch(:meter_number) @wsdl = options[:wsdl] @response = options[:response] || "Response" end def service Service.new( name: name, client: merged_client_options, wsdl: wsdl, defaults: merged_defaults, response: Fex.const_get(response) ) end def merged_defaults authentication.deep_merge(version: version).deep_merge(defaults) end def authentication { web_authentication_detail: { user_credential: { key: key, password: password } }, client_detail: { account_number: account_number, meter_number: meter_number } } end def merged_client_options endpoint_options.deep_merge(client_options) end def endpoint_options if mode.to_s == "production" { endpoint: PRODUCTION_ENDPOINT } else {} end end end end
Version data entries
5 entries across 5 versions & 1 rubygems
Version | Path |
---|---|
fex-0.0.5 | lib/fex/service_factory.rb |
fex-0.0.4 | lib/fex/service_factory.rb |
fex-0.0.3 | lib/fex/service_factory.rb |
fex-0.0.2 | lib/fex/service_factory.rb |
fex-0.0.1 | lib/fex/service_factory.rb |