class Moneta::Api::Service
Constants
- DEMO
- PRODUCTION
- URL
Public Class Methods
new(username, password, params = {})
click to toggle source
# File lib/moneta/api/service.rb, line 10 def initialize(username, password, params = {}) @username = username @password = password @connection = connection(Options.new(params)) end
Public Instance Methods
call_method(method_id, request)
click to toggle source
# File lib/moneta/api/service.rb, line 16 def call_method(method_id, request) @connection.post do |req| req.url URL req.headers['Content-Type'] = 'application/json;charset=UTF-8' req.body = request_body(method_id, request).to_json end end
Private Instance Methods
connection(options)
click to toggle source
# File lib/moneta/api/service.rb, line 26 def connection(options) Faraday.new(url: endpoint(options.demo?)) do |faraday| if options.logger faraday.response :logger, options.logger, bodies: options.log_bodies? do | logger | logger.filter(/(#{ @password })/,'[FILTERED]') options.filter.each do |subject, replacement| logger.filter(/#{ subject }/, replacement) end end end faraday.adapter :net_http do |http| http.open_timeout = options.open_timeout end end end
endpoint(demo)
click to toggle source
# File lib/moneta/api/service.rb, line 44 def endpoint(demo) demo ? DEMO : PRODUCTION end
method_name(method_id)
click to toggle source
# File lib/moneta/api/service.rb, line 66 def method_name(method_id) "#{ method_id.to_s.camelize }Request" end
request_body(method_id, request)
click to toggle source
# File lib/moneta/api/service.rb, line 48 def request_body(method_id, request) { 'Envelope' => { 'Header' => { 'Security' => { 'UsernameToken' => { 'Username' => @username, 'Password' => @password } } }, 'Body' => { method_name(method_id) => request_hash(request) } } } end
request_hash(request)
click to toggle source
# File lib/moneta/api/service.rb, line 70 def request_hash(request) request.respond_to?(:to_hash) ? request.to_hash : { value: request } end