Sha256: 70ebfa0467b045bafff997f90a2894472997f02414b6dde47a467ffcbd8d0c4f

Contents?: true

Size: 720 Bytes

Versions: 1

Compression:

Stored size: 720 Bytes

Contents

# frozen_string_literal: true

module ApiSignature
  class Validator
    attr_reader :timestamp

    def initialize(options)
      @options = options
      @timestamp = Time.at(@options[:timestamp].to_i).utc
    end

    def valid?(signature, secret)
      return false if signature.blank? || secret.blank? || expired?
      generator.generate_signature(secret) == signature
    end

    def expired?
      !alive?
    end

    private

    def generator
      @generator ||= Generator.new(@options)
    end

    def alive?
      alive_timerange.cover?(timestamp)
    end

    def alive_timerange
      @alive_timerange ||= (ttl.ago..ttl.from_now)
    end

    def ttl
      ApiSignature.signature_ttl
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
api_signature-0.1.5 lib/api_signature/validator.rb