class ParcelApi::Client
Attributes
address[RW]
auth_address[RW]
client_id[RW]
client_secret[RW]
password[RW]
redis[RW]
username[RW]
Public Class Methods
connection()
click to toggle source
# File lib/parcel_api/client.rb, line 18 def self.connection @connection ||= new.connection end
new()
click to toggle source
# File lib/parcel_api/client.rb, line 22 def initialize @client_id = client_id || ENV['CLIENT_ID'] @client_secret = client_secret || ENV['CLIENT_SECRET'] @username = username || ENV['USERNAME'] @password = password || ENV['PASSWORD'] @address = address || 'https://api.nzpost.co.nz' @auth_address = auth_address || 'https://oauth.nzpost.co.nz/as/token.oauth2' @redis = redis || Redis.new end
Public Instance Methods
connection()
click to toggle source
# File lib/parcel_api/client.rb, line 32 def connection @access_token_cache ||= begin if json = @redis.get(:parcel_api_access_token) access_token = OAuth2::AccessToken.from_hash client, JSON.parse(json) else access_token = client.password.get_token @username, @password @redis.set(:parcel_api_access_token, access_token.to_hash.to_json, ex: (access_token.expires_in.seconds - 1.hour)) access_token end end end
Private Instance Methods
client()
click to toggle source
# File lib/parcel_api/client.rb, line 46 def client OAuth2::Client.new(@client_id, @client_secret, site: @address, token_url: @auth_address, connection_opts: { headers: { 'client_id' => @client_id } }) end