Sha256: 641f158974391bd8b0d8e327ff0b55ec5362d1feddba037ad86efb1663ac1daa

Contents?: true

Size: 1.14 KB

Versions: 2

Compression:

Stored size: 1.14 KB

Contents

require 'faraday'
require 'faraday_middleware'

module Mpesa
  class Client
    attr_reader :key, :secret, :env, :adapter, :shortcode, :pass_key

    def initialize(key:, secret:, shortcode: nil, pass_key: nil, env: 'production', adapter: Faraday.default_adapter)
      @key = key
      @secret = secret
      @env = env
      @adapter = adapter
      @pass_key = pass_key
      @shortcode = shortcode
    end

    def auth
      Token.new(self).token
    end

    def register(**args)
      Register.new(self, args).call
    end

    def stk(**args)
      Stk.new(self, args).call
    end

    def payout(**args)
      Payout.new(self, args).call
    end

    def connection(basic_auth: false)
      @connection ||= Faraday.new do |conn|
        conn.url_prefix = "https://#{subdomain}.safaricom.co.ke"
        conn.request :json
        conn.response :json, content_type: 'application/json'
        conn.adapter adapter
        conn.request :basic_auth, key, secret if basic_auth
        conn.request :authorization, :Bearer, auth.access_token unless basic_auth
      end
    end

    def subdomain
      env == 'production' ? 'api' : 'sandbox'
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
mpesarb-0.3.1 lib/mpesa/client.rb
mpesarb-0.3.0 lib/mpesa/client.rb