Class: AlexaVerifier::Verifier

Inherits:
Object
  • Object
show all
Defined in:
lib/alexa_verifier/verifier.rb,
lib/alexa_verifier/verifier/certificate_verifier.rb,
lib/alexa_verifier/verifier/certificate_u_r_i_verifier.rb

Overview

A namespace for all of our verifiers to live under

Since:

  • 0.1

Defined Under Namespace

Modules: CertificateURIVerifier, CertificateVerifier

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize {|config| ... } ⇒ Verifier

Create a new AlexaVerifier::Verifier object

Yields:

  • the configuration block

Yield Parameters:

Since:

  • 0.1



14
15
16
17
18
# File 'lib/alexa_verifier/verifier.rb', line 14

def initialize
  @configuration = AlexaVerifier::Configuration.new

  yield @configuration if block_given?
end

Instance Attribute Details

#configurationObject

Since:

  • 0.1



8
9
10
# File 'lib/alexa_verifier/verifier.rb', line 8

def configuration
  @configuration
end

Instance Method Details

#configure {|config| ... } ⇒ Object

Used to configure AlexaVerifier.

Examples:

AlexaVerifier.configure do |c|
  c.some_config_option = true
end

Yields:

  • the configuration block

Yield Parameters:

Since:

  • 0.1



70
71
72
# File 'lib/alexa_verifier/verifier.rb', line 70

def configure
  yield @configuration
end

#valid!(request) ⇒ nil

Validate a request object from Rack. Raise an error if it is not valid.

Parameters:

  • request (Rack::Request::Env)

    a Rack HTTP Request

Returns:

  • (nil)

    will always return nil

Raises:

Since:

  • 0.1



29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/alexa_verifier/verifier.rb', line 29

def valid!(request)
  signature_certificate_url = request.env['HTTP_SIGNATURECERTCHAINURL']

  AlexaVerifier::Verifier::CertificateURIVerifier.valid!(signature_certificate_url) if @configuration.verify_uri?

  raw_body = request.body.read
  request.body && request.body.rewind # call the rewind method if it exists (handles Sinatra specifically)

  check_that_request_is_timely(raw_body) if @configuration.verify_timeliness?

  check_that_request_is_valid(signature_certificate_url, request, raw_body)

  true
end

#valid?(request) ⇒ Boolean

Validate a request object from Rack. Return a boolean.

Parameters:

  • request (Rack::Request::Env)

    a Rack HTTP Request

Returns:

  • (Boolean)

    is the request valid?

Since:

  • 0.1



49
50
51
52
53
54
55
56
57
58
59
# File 'lib/alexa_verifier/verifier.rb', line 49

def valid?(request)
  begin
    valid!(request)
  rescue AlexaVerifier::BaseError => e
    puts e

    return false
  end

  true
end