Sha256: c521d19c784705ca0c35aebc67eec7a22db69ab011329578a4782fb1d8b50266

Contents?: true

Size: 1.02 KB

Versions: 1

Compression:

Stored size: 1.02 KB

Contents

# frozen_string_literal: true

module AbsorbApi
  class Authorize
    attr_accessor :created_at

    def initialize
      token
    end

    def expired?
      return true if created_at.blank?

      DateTime.now >= created_at + 4.hours
    end

    def token
      return @token unless expired?

      @token = ActiveSupport::JSON.decode(connection.post do |req|
        req.url "Authenticate"
        req.headers["Content-Type"] = "application/json"
        req.headers["accept"] = "json"
        req.body = payload.to_json
      end.body)
      @created_at = DateTime.now
    end

    private

    def connection
      Faraday.new(url: AbsorbApi.configuration.url) do |faraday|
        faraday.request :url_encoded
        faraday.response :logger
        faraday.adapter Faraday.default_adapter
      end
    end

    def payload
      {
        "Username"   => AbsorbApi.configuration.absorbuser,
        "Password"   => AbsorbApi.configuration.absorbpass,
        "PrivateKey" => AbsorbApi.configuration.absorbkey
      }
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
absorb_api-0.9.3 lib/absorb_api/authorize.rb