alexa_rubykit 0.0.10 → 0.0.11

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: c869df61a86e4d9b36054e1470456344e6e28c1d
4
- data.tar.gz: dc5507f3e5b846a5f1f026757c5179e11b5f2ae3
3
+ metadata.gz: 6bb6171d59540cf84093f975baadecce2e845ee1
4
+ data.tar.gz: b283a2cf1d67ed6e51d43a223ebe2c96321c0827
5
5
  SHA512:
6
- metadata.gz: e442fb944bb26ee7b746cfa6e385ab56b71cb29501bc05c503f0e3597b49dafb6b6e7d39ac197d225e20612231f918e1dad0ac828e2c539449c1125dca440a09
7
- data.tar.gz: 7bcc9198d4b088ed34c07a4a0b350f1b611b015d5b15ba5637c02fa9de3c40a265d0627fa3f51898fe6f0969a6982caecb42b37077c26a812066a130bf3ac928
6
+ metadata.gz: 973f24b4cd65410b41a85fd80eaac170f2e9383a5ec04d413670333fb96f3028d6494427ce04940dae1b3b0e4427444244a1c2f8aa1d058584c53ac89a879eb7
7
+ data.tar.gz: edd21dda5ad14808798304018e85a09306dd41af059883d1d219fcd7ea72c29ea31ac5b6ed9a7769b67634da149a9b9770b524190a863495f609ab71dc8be2ba
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- alexa_rubykit (0.0.10.pre.dev)
4
+ alexa_rubykit (0.0.11.pre.dev)
5
5
  bundler (~> 1.7)
6
6
  rake (~> 10.0)
7
7
  sinatra (~> 1.4)
@@ -0,0 +1,57 @@
1
+ module AlexaRubykit
2
+ class IntentRequest < Request
3
+ attr_accessor :request_id, :intent, :name, :slots
4
+
5
+ # We still don't know if all of the parameters in the request are required.
6
+ # Checking for the presence of intent on an IntentRequest.
7
+ def initialize(request_id, intent)
8
+ raise ArgumentError, 'Intent should exist on an IntentRequest' if intent.nil?
9
+ @type = 'INTENT_REQUEST'
10
+ @request_id = request_id
11
+ @intent = intent
12
+ @name = intent['name']
13
+ @slots = intent['slots']
14
+ end
15
+
16
+ # Takes a Hash object.
17
+ def add_hash_slots(slots)
18
+ raise ArgumentError, 'Slots can\'t be empty'
19
+ slots.each do |slot|
20
+ @slots[:slot[:name]] = Slot.new(slot[:name], slot[:value])
21
+ end
22
+ @slots
23
+ end
24
+
25
+ # Takes a JSON Object and symbolizes its keys.
26
+ def add_slots(slots)
27
+ slot_hash = AlexaRubykit.transform_keys_to_symbols(value)
28
+ add_hash_slots(slot_hash)
29
+ end
30
+
31
+ # Adds a slot from a name and a value.
32
+ def add_slot(name, value)
33
+ slot = Slot.new(name, value)
34
+ @slots[:name] = slot
35
+ slot
36
+ end
37
+
38
+ def to_s
39
+ "IntentRequest: #{@name} requestID: #{request_id} Slots: #{@slots}"
40
+ end
41
+ end
42
+
43
+
44
+ class Slot
45
+ attr_accessor :name, :value
46
+
47
+ def initialize(name, value)
48
+ raise ArgumentError, 'Need a name and a value' if name.nil? || value.nil?
49
+ @name = name
50
+ @value = value
51
+ end
52
+
53
+ def to_s
54
+ "Slot Name: #{@name}, Value: #{value}"
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,16 @@
1
+ module AlexaRubykit
2
+ class LaunchRequest < Request
3
+ attr_accessor :request_id
4
+
5
+ # We still don't know if all of the parameters in the request are required.
6
+ # Checking for the presence of intent on an IntentRequest.
7
+ def initialize(request_id)
8
+ raise ArgumentError, 'Request ID should exist on a LaunchRequest' if request_id.nil?
9
+ @type = 'LAUNCH_REQUEST'
10
+ @request_id = request_id
11
+ end
12
+ def to_s
13
+ "LaunchRequest requestID: #{@request_id}"
14
+ end
15
+ end
16
+ end
@@ -5,25 +5,32 @@ module AlexaRubykit
5
5
  # - SessionEndedRequest: Session has ended.
6
6
  class Request
7
7
  require 'json'
8
- require 'sinatra'
9
- require 'alexa_rubykit'
10
8
  attr_accessor :version, :session_return, :response, :shouldEndSession, :type
9
+ end
10
+
11
+ def self.build_request(json_request)
12
+ raise ArgumentError, 'Invalid Alexa Request.' unless AlexaRubykit.valid_alexa?(json_request)
13
+ @request = nil
14
+ case json_request['request']['type']
15
+ when /Launch/
16
+ @request = LaunchRequest.new(json_request['request']['requestId'])
17
+ when /Intent/
18
+ @request = IntentRequest.new(json_request['request']['requestId'], json_request['request']['intent'])
19
+ when /SessionEnded/
20
+ 'SESSION_ENDED'
21
+ else
22
+ raise ArgumentError, 'Invalid Request Type.'
23
+ end
24
+ @request
25
+ end
11
26
 
12
- @request = ''
13
- @type = ''
14
- def initialize(json_request)
15
- halt 500 unless AlexaRubykit.valid_alexa?(json_request)
16
- @request = json_request
17
- case @request['request']['type']
18
- when /Launch/
19
- @type = 'LAUNCH'
20
- when /Intent/
21
- @type = 'INTENT'
22
- when /SessionEnded/
23
- @type = 'SESSIONENDED'
24
- else
25
- halt 500
26
- end
27
+ # Let's monkey patch Hash.
28
+ refine Hash do
29
+ # Take keys of hash and transform those to a symbols
30
+ def self.transform_keys_to_symbols(value)
31
+ return value if not value.is_a?(Hash)
32
+ hash = value.inject({}){|memo,(k,v)| memo[k.to_sym] = Hash.transform_keys_to_symbols(v); memo}
33
+ return hash
27
34
  end
28
35
  end
29
36
  end
@@ -1,3 +1,3 @@
1
1
  module AlexaRubykit
2
- VERSION = '0.0.10'
2
+ VERSION = '0.0.11'
3
3
  end
data/lib/alexa_rubykit.rb CHANGED
@@ -1,6 +1,8 @@
1
1
  require 'alexa_rubykit/request'
2
2
  require 'alexa_rubykit/version'
3
3
  require 'alexa_rubykit/response'
4
+ require 'alexa_rubykit/intent_request'
5
+ require 'alexa_rubykit/launch_request'
4
6
 
5
7
  module AlexaRubykit
6
8
  def self.print_json(json)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alexa_rubykit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.10
4
+ version: 0.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Damian Finol
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-07 00:00:00.000000000 Z
11
+ date: 2015-05-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -93,6 +93,8 @@ files:
93
93
  - README.md
94
94
  - Rakefile
95
95
  - lib/alexa_rubykit.rb
96
+ - lib/alexa_rubykit/intent_request.rb
97
+ - lib/alexa_rubykit/launch_request.rb
96
98
  - lib/alexa_rubykit/request.rb
97
99
  - lib/alexa_rubykit/response.rb
98
100
  - lib/alexa_rubykit/version.rb