module Plagiarism::Client::SignedRequest

Constants

HEADER_KEYS

Protected Instance Methods

add_signature(headers, request_method, path) click to toggle source
# File lib/plagiarism/client/signed_request.rb, line 26
def add_signature(headers, request_method, path)
  @prefix ||= Plagiarism::Client.endpoint.gsub(/.*?(\/api\/v\d+.*)/, '\1')
  path = File.join(@prefix, path)
  options = signature_options(headers, request_method, path)

  HEADER_KEYS.each do |kind, header|
    headers[normalize_key(header)] = options[kind].to_s
  end

  headers
end
generate_signature(options) click to toggle source
# File lib/plagiarism/client/signed_request.rb, line 58
def generate_signature(options)
  ApiSignature::Generator
    .new(options)
    .generate_signature(Plagiarism::Client.secret)
end
signature_options(headers, request_method, path) click to toggle source
# File lib/plagiarism/client/signed_request.rb, line 38
def signature_options(headers, request_method, path)
  options = {
    path: path,
    request_method: request_method.to_s.upcase,
    access_key: Plagiarism::Client.token,
    timestamp: timestamp_for_options(headers)
  }.with_indifferent_access

  options[:signature] = generate_signature(options)

  options
end
timestamp_for_options(headers) click to toggle source
# File lib/plagiarism/client/signed_request.rb, line 51
def timestamp_for_options(headers)
  header_key = HEADER_KEYS[:timestamp].gsub(/^HTTP_/, '')

  return headers[header_key] if headers.key? header_key
  Time.zone.now.to_i
end

Private Instance Methods

normalize_key(key) click to toggle source
# File lib/plagiarism/client/signed_request.rb, line 66
def normalize_key(key)
  key.gsub(/^HTTP_/i, '').tr('_', '-').downcase
end