ralyxa 1.4.0 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6aa4014123fdf96c66aafea914bbf45fc005234d
4
- data.tar.gz: 9f61bfe7853045176e0b1fe46d2cb525fd5d1077
3
+ metadata.gz: 356706a000592a8cf4cd64652ef2f61cf2f3f257
4
+ data.tar.gz: 3f7dbf9429193a8d2dcfbaa254a40fe1d6c80c19
5
5
  SHA512:
6
- metadata.gz: 217f26ef4be39c6e7b80d1666e6d7a9fb5361aeb41e8419e8446a92819ae5b2bd5fb1a3a3ed6f62b17a13171a24d607a810f4847464481480e8680c3528ae1ac
7
- data.tar.gz: 5e40b794bd024fb2c8b8306b23bf09a423930fd72f825810bf7616443d920ef5f2120aa2a966dc84376fe85df9bb9045fa0c05286ed7dec873dfb76d2ee7575c
6
+ metadata.gz: f4460af9eecb7d2e4114b168c3d79f80cdccbec3a3e200e664588f7d9654b87353505aad2755955fe212cce8b38206aa93d1100b85f572cb6a28ddc0aeae3f5f
7
+ data.tar.gz: 0fdac2ee8f5e53bb5394b5bd06b290fafa0a95d265d74339ae90fd91aa38d21072eab9161318b2dd82766abb86b237fdb28bb1d48ec37dca4d7512866279ef48
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ralyxa (1.3.0)
4
+ ralyxa (1.4.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -1,22 +1,22 @@
1
1
  require_relative './response_builder'
2
2
  require_relative './card'
3
3
 
4
+ # Handler Base Class. Each Intent Handler inherits from this, and overwrites the #handle method.
4
5
  module Ralyxa
5
6
  class Handler
6
- def initialize(request, intent_proc)
7
- @request = request
8
- @intent_proc = intent_proc
7
+ def initialize(request)
8
+ @request = request
9
9
  end
10
10
 
11
11
  def handle
12
- instance_eval &@intent_proc
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,11 +33,10 @@ module Ralyxa
33
33
 
34
34
  NO_INTENT_DECLARATIONS_FOUND = <<~HEREDOC
35
35
  \e[33m
36
- WARNING: You haven't defined any intents.
36
+ WARNING: You haven't defined any intent declarations.
37
37
 
38
- Please define intents inside a directory called 'intents',
39
- on the same directory level as the runfile for your server application,
40
- or change the default intents directory in alexa/register_intents.rb.
38
+ Please define intent declarations inside a directory called 'intents',
39
+ on the same directory level as the runfile for your server application.
41
40
  \e[0m
42
41
  HEREDOC
43
42
  end
data/lib/ralyxa/skill.rb CHANGED
@@ -2,31 +2,53 @@ require_relative './request'
2
2
  require_relative './response'
3
3
  require_relative './handler'
4
4
 
5
+ # Routes an incoming request to the correct Handler.
5
6
  module Ralyxa
6
7
  class Skill
7
- @@intents = {}
8
+ @@handlers = {}
8
9
 
9
10
  def initialize(request)
10
11
  @request = request
11
12
  end
12
13
 
13
- def handle(handler = Ralyxa::Handler)
14
- intent_proc = self.class.registered_intents[@request.intent_name]
15
- handler.new(@request, intent_proc).handle
14
+ def handle
15
+ handler = self.class.handlers[@request.intent_name]
16
+ handler ? handler.new(@request).handle : warn(handler_not_found)
16
17
  end
17
18
 
18
19
  class << self
19
- def intent(intent_name, &block)
20
- @@intents[intent_name] = block
21
- end
22
-
23
- def registered_intents
24
- @@intents.dup
20
+ def intent(intent_name, handler_base_class = Ralyxa::Handler, &intent_block)
21
+ intent_handler = Class.new(handler_base_class)
22
+ intent_handler.send(:define_method, :handle, &intent_block)
23
+ @@handlers[intent_name] = intent_handler
25
24
  end
26
25
 
27
26
  def handle(request, alexa_request_wrapper = Ralyxa::Request)
28
27
  new(alexa_request_wrapper.new(request)).handle
29
28
  end
29
+
30
+ def handlers
31
+ @@handlers.dup
32
+ end
33
+ end
34
+
35
+ private
36
+
37
+ def handler_not_found
38
+ <<~HEREDOC
39
+ \e[33m
40
+ WARNING: An intent declaration for intent "#{ @request.intent_name }" was not found.
41
+
42
+ To define it, add an intent declaration inside a directory called 'intents',
43
+ on the same directory level as the runfile for your server application.
44
+
45
+ You probably want something like:
46
+
47
+ intent "#{ @request.intent_name }" do
48
+ respond("Hello World!")
49
+ end
50
+ \e[0m
51
+ HEREDOC
30
52
  end
31
53
  end
32
54
  end
data/lib/ralyxa/user.rb CHANGED
@@ -9,8 +9,8 @@ module Ralyxa
9
9
 
10
10
  def self.build(request)
11
11
  new(
12
- id: request.dig(:session, :user, :userId),
13
- access_token: request.dig(:session, :user, :accessToken)
12
+ id: request.dig("session", "user", "userId"),
13
+ access_token: request.dig("session", "user", "accessToken")
14
14
  )
15
15
  end
16
16
 
@@ -1,3 +1,3 @@
1
1
  module Ralyxa
2
- VERSION = "1.4.0"
2
+ VERSION = "1.5.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ralyxa
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Morgan