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