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
16
17
# 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
  }.tap do |params|
    params["user.id"] = user_id unless user_id.empty?
  end
end

.expire_time_in(offset) ⇒ Object



43
44
45
# File 'lib/academic_benchmarks/api/auth.rb', line 43

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

.expire_time_in_10_secondsObject



35
36
37
# File 'lib/academic_benchmarks/api/auth.rb', line 35

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

.expire_time_in_2_hoursObject



39
40
41
# File 'lib/academic_benchmarks/api/auth.rb', line 39

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

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



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

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

.signature_for(partner_key:, message:) ⇒ Object



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

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