class BeautydateApi::APISession
Attributes
expires_at[RW]
token_key[RW]
Public Class Methods
new(token_key = nil)
click to toggle source
# File lib/beautydate_api/api_session.rb, line 5 def initialize(token_key = nil) @token_key = token_key @expires_at = extract_expires_at end
Public Instance Methods
authenticate(authorization, email, password)
click to toggle source
# File lib/beautydate_api/api_session.rb, line 10 def authenticate(authorization, email, password) request = meta .merge(headers(authorization)) .merge(payload(email, password)) result = JSON.parse(RestClient::Request.execute request) @token_key = result.dig('data', 'attributes', 'token') @expires_at = result.dig('data', 'attributes', 'expires_at') authenticated? rescue => e raise AuthenticationException end
authenticated?()
click to toggle source
# File lib/beautydate_api/api_session.rb, line 51 def authenticated? @token_key.present? end
headers(authorization)
click to toggle source
# File lib/beautydate_api/api_session.rb, line 28 def headers(authorization) { headers: { user_agent: "BeautyDate/#{BeautydateApi::VERSION}; Ruby Client", content_type: 'application/vnd.api+json', authorization: authorization } } end
meta()
click to toggle source
# File lib/beautydate_api/api_session.rb, line 24 def meta { method: 'POST', url: "#{BeautydateApi.base_uri}/sessions", timeout: 30 } end
payload(email, password)
click to toggle source
# File lib/beautydate_api/api_session.rb, line 38 def payload(email, password) { payload: { data: { type: 'sessions', attributes: { provider: 'b2beauty', email: email, password: password } } }.to_json } end
token()
click to toggle source
# File lib/beautydate_api/api_session.rb, line 59 def token "Token=#{@token_key}" end
valid?()
click to toggle source
# File lib/beautydate_api/api_session.rb, line 55 def valid? authenticated? and Time.now <= Time.at(@expires_at) end
Private Instance Methods
extract_expires_at()
click to toggle source
# File lib/beautydate_api/api_session.rb, line 65 def extract_expires_at return if @token_key.nil? payload = @token_key.split('.')[1] JSON.load(Base64.decode64(payload)).dig('exp') end