Module: AcademicBenchmarks::Api::Auth

Defined in:
lib/academic_benchmarks/api/auth.rb

Class Method Summary collapse

Class Method Details

.auth_query_params(partner_id:, partner_key:, expires:, user_id: "") ⇒ Object



6
7
8
9
10
11
12
13
14
15
# File 'lib/academic_benchmarks/api/auth.rb', line 6

def self.auth_query_params(partner_id:, partner_key:, expires:, user_id: "")
  {
    "partner.id" => partner_id,
    "auth.signature" => signature_for(
      partner_key: partner_key,
      message: self.message(expires: expires, user_id: user_id)),
    "auth.expires" => expires,
    "user.id" => user_id
  }
end

.expire_time_in(offset) ⇒ Object



41
42
43
# File 'lib/academic_benchmarks/api/auth.rb', line 41

def self.expire_time_in(offset)
  Time.now.to_i + offset
end

.expire_time_in_10_secondsObject



33
34
35
# File 'lib/academic_benchmarks/api/auth.rb', line 33

def self.expire_time_in_10_seconds
  self.expire_time_in(10.seconds)
end

.expire_time_in_2_hoursObject



37
38
39
# File 'lib/academic_benchmarks/api/auth.rb', line 37

def self.expire_time_in_2_hours
  self.expire_time_in(2.hours)
end

.message(expires:, user_id: '') ⇒ Object



25
26
27
28
29
30
31
# File 'lib/academic_benchmarks/api/auth.rb', line 25

def self.message(expires:, user_id: '')
  if user_id.empty?
    "#{expires}"
  else
    "#{expires}\n#{user_id}"
  end
end

.signature_for(partner_key:, message:) ⇒ Object



17
18
19
20
21
22
23
# File 'lib/academic_benchmarks/api/auth.rb', line 17

def self.signature_for(partner_key:, message:)
  Base64.encode64(OpenSSL::HMAC.digest(
    OpenSSL::Digest.new('sha256'),
    partner_key,
    message
  )).chomp
end