ralyxa 1.5.2 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2ba3b580559880302aba0c710a6d0e8f6b5acd21
4
- data.tar.gz: c1b4afb09c6a7504f4abdd0e310996984724684a
3
+ metadata.gz: f1ff42c3c4d881414ba200d222731420250354dd
4
+ data.tar.gz: b20af2b9b31a38ca6840f931aadfac82042a167c
5
5
  SHA512:
6
- metadata.gz: a14312a4070648259a5e690f5d818a14008fb7d229a61482a8d7c144e6fd1cbf68b6120674c676bf52e4b181fbaa35f21f41a9d515a1f358a226c98ac58ff481
7
- data.tar.gz: 553d41cb7f590514db8ea25f5d9573fe4a64c02bd3eb02c0d45365525c22b59f4bbc736882aeeb7171c40d404c9a1bb85abd31b8ee09a073e8f8a0978a739f89
6
+ metadata.gz: e8df761d9ee6ac49298fe03fb29f9021115e68b06ba7865a07eb09d7514ff19140e4405f5657adfe582997c8f7ea8c1f32122f0eeb9da183d180818c1269f772
7
+ data.tar.gz: b2505f0529eaa5ab513ec79c140b45c6bc75d2e4745bd3d5d56fb03086dab90feb883bf469a78f9d7dd39e83db55131a681668a3fa8c232420d70bc67acf73f9
data/.rubocop.yml ADDED
@@ -0,0 +1,13 @@
1
+ AllCops:
2
+ Exclude:
3
+ - spec/**/*.rb
4
+ TargetRubyVersion: 2.3.1
5
+
6
+ Metrics/LineLength:
7
+ Enabled: false
8
+
9
+ Style/FrozenStringLiteralComment:
10
+ Enabled: false
11
+
12
+ Documentation:
13
+ Enabled: false
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.3.1
data/README.md CHANGED
@@ -190,6 +190,25 @@ end
190
190
 
191
191
  > You can't actually respond to a `SessionEndedRequest`, but you might want to do some tidying in this action.
192
192
 
193
+ ## Testing
194
+ Part of Amazon's requirements for Alexa skills is that they have to ensure requests are sent from Amazon. This is done in a number of ways documented [here](https://developer.amazon.com/docs/custom-skills/host-a-custom-skill-as-a-web-service.html). This verification is built into Ralyxa and can cause issues when testing your skills with stubbed data.
195
+
196
+ ### Disabling verification
197
+ Inside of your spec_helper files, include the following to disable verification:
198
+
199
+ #### RSpec
200
+ ```ruby
201
+ require 'ralyxa'
202
+
203
+ RSpec.configure do |config|
204
+ config.before :each do
205
+ Ralyxa.configure do |config|
206
+ config.validate_requests = false
207
+ end
208
+ end
209
+ end
210
+ ```
211
+
193
212
  ## Development
194
213
 
195
214
  After checking out the repo, run `bundle install` to install dependencies. Then, run `rspec` to run the tests. You can also run `irb` for an interactive prompt that will allow you to experiment.
data/Rakefile CHANGED
@@ -1,6 +1,6 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
3
 
4
4
  RSpec::Core::RakeTask.new(:spec)
5
5
 
6
- task :default => :spec
6
+ task default: :spec
data/bin/console CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require "bundler/setup"
4
- require "ralyxa"
3
+ require 'bundler/setup'
4
+ require 'ralyxa'
5
5
 
6
6
  # You can add fixtures and/or initialization code here to make experimenting
7
7
  # with your gem easier. You can also use a different console, if you like.
@@ -10,5 +10,5 @@ require "ralyxa"
10
10
  # require "pry"
11
11
  # Pry.start
12
12
 
13
- require "irb"
13
+ require 'irb'
14
14
  IRB.start(__FILE__)
@@ -0,0 +1,13 @@
1
+ module Ralyxa
2
+ class Configuration
3
+ attr_accessor :validate_requests
4
+
5
+ def initialize
6
+ @validate_requests = true
7
+ end
8
+
9
+ def validate_requests?
10
+ validate_requests
11
+ end
12
+ end
13
+ end
data/lib/ralyxa/errors.rb CHANGED
@@ -1,2 +1,2 @@
1
1
  class UnsecureUrlError < StandardError
2
- end
2
+ end
@@ -12,11 +12,11 @@ module Ralyxa
12
12
  raise NotImplementedError
13
13
  end
14
14
 
15
- def respond(response_text = "", response_details = {}, response_builder = Ralyxa::ResponseBuilder)
15
+ def respond(response_text = '', response_details = {}, response_builder = Ralyxa::ResponseBuilder)
16
16
  response_builder.build(response_details.merge(response_text: response_text))
17
17
  end
18
18
 
19
- def tell(response_text = "", response_details = {})
19
+ def tell(response_text = '', response_details = {})
20
20
  respond(response_text, response_details.merge(end_session: true))
21
21
  end
22
22
 
@@ -33,4 +33,4 @@ module Ralyxa
33
33
  attr_reader :request
34
34
  private :request, :respond, :tell, :ask
35
35
  end
36
- end
36
+ end
@@ -2,7 +2,7 @@ require_relative './skill'
2
2
 
3
3
  module Ralyxa
4
4
  class RegisterIntents
5
- DEFAULT_INTENTS_DIRECTORY = "./intents".freeze
5
+ DEFAULT_INTENTS_DIRECTORY = './intents'.freeze
6
6
 
7
7
  def initialize(intents_directory, alexa_skill_class)
8
8
  @intents_directory = intents_directory
@@ -22,22 +22,24 @@ module Ralyxa
22
22
  end
23
23
 
24
24
  private
25
+
25
26
  attr_reader :intents_directory, :alexa_skill_class
26
27
 
27
28
  def intent_declarations
28
29
  @intent_declarations ||=
29
- Dir.glob("#{ intents_directory }/*.rb")
30
- .map { |relative_path| File.expand_path(relative_path) }
31
- .map { |intent_declaration_path| File.open(intent_declaration_path).read }
30
+ Dir.glob("#{intents_directory}/*.rb")
31
+ .map { |relative_path| File.expand_path(relative_path) }
32
+ .map { |intent_declaration_path| File.open(intent_declaration_path).read }
32
33
  end
33
34
 
34
- NO_INTENT_DECLARATIONS_FOUND = <<~HEREDOC
35
- \e[33m
36
- WARNING: You haven't defined any intent declarations.
35
+ heredoc = <<~HEREDOC
36
+ \e[33m
37
+ WARNING: You haven't defined any intent declarations.
37
38
 
38
- Please define intent declarations inside a directory called 'intents',
39
- on the same directory level as the runfile for your server application.
40
- \e[0m
39
+ Please define intent declarations inside a directory called 'intents',
40
+ on the same directory level as the runfile for your server application.
41
+ \e[0m
41
42
  HEREDOC
43
+ NO_INTENT_DECLARATIONS_FOUND = heredoc.freeze
42
44
  end
43
- end
45
+ end
@@ -1,12 +1,13 @@
1
1
  require 'json'
2
2
  require 'forwardable'
3
+ require 'alexa_verifier'
3
4
  require_relative './user'
4
5
 
5
6
  module Ralyxa
6
7
  module RequestEntities
7
8
  class Request
8
9
  extend Forwardable
9
- INTENT_REQUEST_TYPE = "IntentRequest".freeze
10
+ INTENT_REQUEST_TYPE = 'IntentRequest'.freeze
10
11
 
11
12
  def_delegator :@user, :id, :user_id
12
13
  def_delegator :@user, :access_token, :user_access_token
@@ -15,30 +16,36 @@ module Ralyxa
15
16
  def initialize(original_request, user_class = Ralyxa::RequestEntities::User)
16
17
  @request = JSON.parse(original_request.body.read)
17
18
  @user = user_class.build(@request)
19
+
20
+ validate_request(original_request) if Ralyxa.configuration.validate_requests?
18
21
  end
19
22
 
20
23
  def intent_name
21
- return @request["request"]["type"] unless intent_request?
22
- @request["request"]["intent"]["name"]
24
+ return @request['request']['type'] unless intent_request?
25
+ @request['request']['intent']['name']
23
26
  end
24
27
 
25
28
  def slot_value(slot_name)
26
- @request["request"]["intent"]["slots"][slot_name]["value"]
29
+ @request['request']['intent']['slots'][slot_name]['value']
27
30
  end
28
31
 
29
32
  def new_session?
30
- @request["session"]["new"]
33
+ @request['session']['new']
31
34
  end
32
35
 
33
36
  def session_attribute(attribute_name)
34
- @request["session"]["attributes"][attribute_name]
37
+ @request['session']['attributes'][attribute_name]
35
38
  end
36
39
 
37
40
  private
38
41
 
39
42
  def intent_request?
40
- @request["request"]["type"] == INTENT_REQUEST_TYPE
43
+ @request['request']['type'] == INTENT_REQUEST_TYPE
44
+ end
45
+
46
+ def validate_request(request)
47
+ AlexaVerifier.valid!(request)
41
48
  end
42
49
  end
43
50
  end
44
- end
51
+ end
@@ -10,14 +10,14 @@ module Ralyxa
10
10
 
11
11
  def self.build(request)
12
12
  new(
13
- id: request.dig("session", "user", "userId"),
14
- access_token: request.dig("session", "user", "accessToken")
13
+ id: request.dig('session', 'user', 'userId'),
14
+ access_token: request.dig('session', 'user', 'accessToken')
15
15
  )
16
16
  end
17
17
 
18
18
  def access_token_exists?
19
- !!@access_token
19
+ !@access_token.nil?
20
20
  end
21
21
  end
22
22
  end
23
- end
23
+ end
@@ -36,9 +36,9 @@ module Ralyxa
36
36
 
37
37
  def output_speech
38
38
  output_speech_params = { speech: @options.delete(:response_text) }
39
- output_speech_params.merge!(ssml: @options.delete(:ssml)) if @options[:ssml]
39
+ output_speech_params[:ssml] = @options.delete(:ssml) if @options[:ssml]
40
40
 
41
41
  @output_speech_class.as_hash(output_speech_params)
42
42
  end
43
43
  end
44
- end
44
+ end
@@ -3,9 +3,9 @@ require_relative '../errors'
3
3
  module Ralyxa
4
4
  module ResponseEntities
5
5
  class Card
6
- LINK_ACCOUNT_CARD_TYPE = "LinkAccount"
7
- SIMPLE_CARD_TYPE = "Simple"
8
- STANDARD_CARD_TYPE = "Standard"
6
+ LINK_ACCOUNT_CARD_TYPE = 'LinkAccount'.freeze
7
+ SIMPLE_CARD_TYPE = 'Simple'.freeze
8
+ STANDARD_CARD_TYPE = 'Standard'.freeze
9
9
 
10
10
  def initialize(options)
11
11
  @options = options
@@ -20,40 +20,40 @@ module Ralyxa
20
20
  end
21
21
 
22
22
  def to_h
23
- Hash.new.tap do |card|
24
- set_type(card)
25
- set_title(card) if @options[:title]
26
- set_body(card) if @options[:body]
27
- set_image(card) if @options[:image_url]
23
+ {}.tap do |card|
24
+ add_type(card)
25
+ add_title(card) if @options[:title]
26
+ add_body(card) if @options[:body]
27
+ add_image(card) if @options[:image_url]
28
28
  end
29
29
  end
30
30
 
31
31
  private
32
32
 
33
- def set_type(card)
33
+ def add_type(card)
34
34
  return card[:type] = LINK_ACCOUNT_CARD_TYPE if link_account?
35
35
  card[:type] = SIMPLE_CARD_TYPE if simple?
36
36
  card[:type] = STANDARD_CARD_TYPE if standard?
37
37
  end
38
38
 
39
- def set_title(card)
39
+ def add_title(card)
40
40
  card[:title] = @options[:title]
41
41
  end
42
42
 
43
- def set_body(card)
43
+ def add_body(card)
44
44
  card[:content] = @options[:body] if simple?
45
45
  card[:text] = @options[:body] if standard?
46
46
  end
47
47
 
48
- def set_image(card)
49
- raise UnsecureUrlError.new("Card images must be available at an SSL-enabled (HTTPS) endpoint. Your current image url is: #{ @options[:image_url] }") unless secure?
50
- card[:image] = Hash.new
48
+ def add_image(card)
49
+ raise UnsecureUrlError, "Card images must be available at an SSL-enabled (HTTPS) endpoint. Your current image url is: #{@options[:image_url]}" unless secure?
50
+ card[:image] = {}
51
51
  card[:image][:smallImageUrl] = @options[:image_url]
52
52
  card[:image][:largeImageUrl] = @options[:image_url]
53
53
  end
54
54
 
55
55
  def link_account?
56
- !!@options[:link_account]
56
+ !@options[:link_account].nil?
57
57
  end
58
58
 
59
59
  def simple?
@@ -61,12 +61,12 @@ module Ralyxa
61
61
  end
62
62
 
63
63
  def standard?
64
- !!@options[:image_url]
64
+ !@options[:image_url].nil?
65
65
  end
66
66
 
67
67
  def secure?
68
- URI.parse(@options[:image_url]).scheme == "https"
68
+ URI.parse(@options[:image_url]).scheme == 'https'
69
69
  end
70
70
  end
71
71
  end
72
- end
72
+ end
@@ -1,8 +1,8 @@
1
1
  module Ralyxa
2
2
  module ResponseEntities
3
3
  class OutputSpeech
4
- DEFAULT_RESPONSE_TEXT = "Hello World"
5
- DEFAULT_RESPONSE_SSML = "<speak>Hello World</speak>"
4
+ DEFAULT_RESPONSE_TEXT = 'Hello World'.freeze
5
+ DEFAULT_RESPONSE_SSML = '<speak>Hello World</speak>'.freeze
6
6
 
7
7
  def initialize(speech, ssml)
8
8
  @speech = speech
@@ -10,8 +10,8 @@ module Ralyxa
10
10
  end
11
11
 
12
12
  def to_h
13
- Hash.new.tap do |output_speech|
14
- @ssml ? set_ssml(output_speech) : set_plaintext(output_speech)
13
+ {}.tap do |output_speech|
14
+ @ssml ? add_ssml(output_speech) : add_plaintext(output_speech)
15
15
  end
16
16
  end
17
17
 
@@ -21,15 +21,15 @@ module Ralyxa
21
21
 
22
22
  private
23
23
 
24
- def set_ssml(output_speech)
25
- output_speech[:type] = "SSML"
24
+ def add_ssml(output_speech)
25
+ output_speech[:type] = 'SSML'
26
26
  output_speech[:ssml] = (@speech || DEFAULT_RESPONSE_SSML)
27
27
  end
28
28
 
29
- def set_plaintext(output_speech)
30
- output_speech[:type] = "PlainText"
29
+ def add_plaintext(output_speech)
30
+ output_speech[:type] = 'PlainText'
31
31
  output_speech[:text] = (@speech || DEFAULT_RESPONSE_TEXT)
32
32
  end
33
33
  end
34
34
  end
35
- end
35
+ end
@@ -12,10 +12,10 @@ module Ralyxa
12
12
  end
13
13
 
14
14
  def to_h
15
- Hash.new.tap do |response|
16
- set_version(response)
17
- set_session_attributes(response)
18
- set_response(response)
15
+ {}.tap do |response|
16
+ add_version(response)
17
+ add_session_attributes(response)
18
+ add_response(response)
19
19
  end
20
20
  end
21
21
 
@@ -24,23 +24,24 @@ module Ralyxa
24
24
  end
25
25
 
26
26
  private
27
+
27
28
  attr_reader :response
28
29
 
29
- def set_version(response)
30
- response[:version] = "1.0"
30
+ def add_version(response)
31
+ response[:version] = '1.0'
31
32
  end
32
33
 
33
- def set_session_attributes(response)
34
+ def add_session_attributes(response)
34
35
  return response[:sessionAttributes] = {} if @start_over
35
36
  response[:sessionAttributes] = @session_attributes unless @session_attributes.empty?
36
37
  end
37
38
 
38
- def set_response(response)
39
- response[:response] = Hash.new
39
+ def add_response(response)
40
+ response[:response] = {}
40
41
  response[:response][:outputSpeech] = @output_speech
41
42
  response[:response][:card] = @card if @card
42
43
  response[:response][:shouldEndSession] = @end_session
43
44
  end
44
45
  end
45
46
  end
46
- end
47
+ end
data/lib/ralyxa/skill.rb CHANGED
@@ -4,7 +4,7 @@ require_relative './handler'
4
4
  # Routes an incoming request to the correct Handler.
5
5
  module Ralyxa
6
6
  class Skill
7
- @@handlers = {}
7
+ @handlers = {}
8
8
 
9
9
  def initialize(request)
10
10
  @request = request
@@ -19,7 +19,7 @@ module Ralyxa
19
19
  def intent(intent_name, handler_base_class = Ralyxa::Handler, &intent_block)
20
20
  intent_handler = Class.new(handler_base_class)
21
21
  intent_handler.send(:define_method, :handle, &intent_block)
22
- @@handlers[intent_name] = intent_handler
22
+ @handlers[intent_name] = intent_handler
23
23
  end
24
24
 
25
25
  def handle(request, alexa_request_wrapper = Ralyxa::RequestEntities::Request)
@@ -27,7 +27,7 @@ module Ralyxa
27
27
  end
28
28
 
29
29
  def handlers
30
- @@handlers.dup
30
+ @handlers.dup
31
31
  end
32
32
  end
33
33
 
@@ -35,19 +35,19 @@ module Ralyxa
35
35
 
36
36
  def handler_not_found
37
37
  <<~HEREDOC
38
- \e[33m
39
- WARNING: An intent declaration for intent "#{ @request.intent_name }" was not found.
38
+ \e[33m
39
+ WARNING: An intent declaration for intent "#{@request.intent_name}" was not found.
40
40
 
41
- To define it, add an intent declaration inside a directory called 'intents',
42
- on the same directory level as the runfile for your server application.
41
+ To define it, add an intent declaration inside a directory called 'intents',
42
+ on the same directory level as the runfile for your server application.
43
43
 
44
- You probably want something like:
44
+ You probably want something like:
45
45
 
46
- intent "#{ @request.intent_name }" do
47
- respond("Hello World!")
48
- end
49
- \e[0m
46
+ intent "#{@request.intent_name}" do
47
+ respond("Hello World!")
48
+ end
49
+ \e[0m
50
50
  HEREDOC
51
51
  end
52
52
  end
53
- end
53
+ end
@@ -1,3 +1,3 @@
1
1
  module Ralyxa
2
- VERSION = "1.5.2"
2
+ VERSION = '1.6.0'.freeze
3
3
  end
data/lib/ralyxa.rb CHANGED
@@ -1,8 +1,36 @@
1
- require "ralyxa/version"
2
- require 'ralyxa/skill'
1
+ require 'ralyxa/version'
2
+ require 'ralyxa/configuration'
3
3
  require 'ralyxa/register_intents'
4
+ require 'ralyxa/skill'
4
5
 
5
6
  module Ralyxa
7
+ class << self
8
+ attr_accessor :configuration
9
+
10
+ def configure
11
+ yield configuration if block_given?
12
+ end
13
+
14
+ def method_missing(m, *args, &block)
15
+ if configuration.respond_to?(m)
16
+ configuration.send(m, *args, &block)
17
+ else
18
+ super
19
+ end
20
+ end
21
+
22
+ def respond_to_missing?(m, include_private = false)
23
+ configuration.respond_to?(m) || super
24
+ end
25
+
26
+ private
27
+
28
+ def setup_configuration
29
+ @configuration = Ralyxa::Configuration.new
30
+ end
31
+ end
32
+
33
+ setup_configuration
6
34
  end
7
35
 
8
- Ralyxa::RegisterIntents.run
36
+ Ralyxa::RegisterIntents.run
data/ralyxa.gemspec CHANGED
@@ -1,26 +1,31 @@
1
- # coding: utf-8
2
1
  lib = File.expand_path('../lib', __FILE__)
3
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
3
  require 'ralyxa/version'
5
4
 
6
5
  Gem::Specification.new do |spec|
7
- spec.name = "ralyxa"
6
+ spec.name = 'ralyxa'
8
7
  spec.version = Ralyxa::VERSION
9
- spec.authors = ["Sam Morgan"]
10
- spec.email = ["samm@makersacademy.com"]
8
+ spec.authors = ['Sam Morgan']
9
+ spec.email = ['samm@makersacademy.com']
11
10
 
12
- spec.summary = %q{A Ruby framework for interacting with Amazon Alexa.}
13
- spec.description = %q{A Ruby framework for interacting with Amazon Alexa. Designed to work with Sinatra, although can be used with a few other web frameworks.}
14
- spec.homepage = "https://github.com/sjmog/ralyxa"
15
- spec.license = "MIT"
11
+ spec.summary = 'A Ruby framework for interacting with Amazon Alexa.'
12
+ spec.description = 'A Ruby framework for interacting with Amazon Alexa. Designed to work with Sinatra, although can be used with a few other web frameworks.'
13
+ spec.homepage = 'https://github.com/sjmog/ralyxa'
14
+ spec.license = 'MIT'
16
15
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
17
16
  f.match(%r{^(test|spec|features)/})
18
17
  end
19
- spec.bindir = "exe"
18
+ spec.bindir = 'exe'
20
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
- spec.require_paths = ["lib"]
20
+ spec.require_paths = ['lib']
22
21
  spec.required_ruby_version = '>= 2.3.1'
23
- spec.add_development_dependency "bundler", "~> 1.14"
24
- spec.add_development_dependency "rake", "~> 10.0"
25
- spec.add_development_dependency "rspec", "~> 3.0"
22
+
23
+ spec.add_dependency 'alexa_verifier', '~> 1.0'
24
+
25
+ spec.add_development_dependency 'bundler', '~> 1.14'
26
+ spec.add_development_dependency 'rake', '~> 10.0'
27
+ spec.add_development_dependency 'rspec', '~> 3.0'
28
+ spec.add_development_dependency 'timecop', '~> 0.9'
29
+ spec.add_development_dependency 'vcr', '~> 3.0'
30
+ spec.add_development_dependency 'webmock', '~> 3.0'
26
31
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ralyxa
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.2
4
+ version: 1.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Morgan
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-05-31 00:00:00.000000000 Z
11
+ date: 2018-01-04 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: alexa_verifier
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: bundler
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -52,6 +66,48 @@ dependencies:
52
66
  - - "~>"
53
67
  - !ruby/object:Gem::Version
54
68
  version: '3.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: timecop
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.9'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.9'
83
+ - !ruby/object:Gem::Dependency
84
+ name: vcr
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '3.0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '3.0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: webmock
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '3.0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '3.0'
55
111
  description: A Ruby framework for interacting with Amazon Alexa. Designed to work
56
112
  with Sinatra, although can be used with a few other web frameworks.
57
113
  email:
@@ -62,16 +118,18 @@ extra_rdoc_files: []
62
118
  files:
63
119
  - ".gitignore"
64
120
  - ".rspec"
121
+ - ".rubocop.yml"
122
+ - ".ruby-version"
65
123
  - ".travis.yml"
66
124
  - CODE_OF_CONDUCT.md
67
125
  - Gemfile
68
- - Gemfile.lock
69
126
  - LICENSE.txt
70
127
  - README.md
71
128
  - Rakefile
72
129
  - bin/console
73
130
  - bin/setup
74
131
  - lib/ralyxa.rb
132
+ - lib/ralyxa/configuration.rb
75
133
  - lib/ralyxa/errors.rb
76
134
  - lib/ralyxa/handler.rb
77
135
  - lib/ralyxa/register_intents.rb
@@ -105,7 +163,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
105
163
  version: '0'
106
164
  requirements: []
107
165
  rubyforge_project:
108
- rubygems_version: 2.6.6
166
+ rubygems_version: 2.6.14
109
167
  signing_key:
110
168
  specification_version: 4
111
169
  summary: A Ruby framework for interacting with Amazon Alexa.
data/Gemfile.lock DELETED
@@ -1,35 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- ralyxa (1.5.0)
5
-
6
- GEM
7
- remote: https://rubygems.org/
8
- specs:
9
- diff-lcs (1.3)
10
- rake (10.5.0)
11
- rspec (3.6.0)
12
- rspec-core (~> 3.6.0)
13
- rspec-expectations (~> 3.6.0)
14
- rspec-mocks (~> 3.6.0)
15
- rspec-core (3.6.0)
16
- rspec-support (~> 3.6.0)
17
- rspec-expectations (3.6.0)
18
- diff-lcs (>= 1.2.0, < 2.0)
19
- rspec-support (~> 3.6.0)
20
- rspec-mocks (3.6.0)
21
- diff-lcs (>= 1.2.0, < 2.0)
22
- rspec-support (~> 3.6.0)
23
- rspec-support (3.6.0)
24
-
25
- PLATFORMS
26
- ruby
27
-
28
- DEPENDENCIES
29
- bundler (~> 1.14)
30
- rake (~> 10.0)
31
- ralyxa!
32
- rspec (~> 3.0)
33
-
34
- BUNDLED WITH
35
- 1.14.6