alexa_objects 1.0.5 → 1.0.6

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: 27c6becd500bc169ede65b66b7c7bbe58b3d030f
4
- data.tar.gz: f4c66ee2745fefe112c65924cbb1c58f1740cc83
3
+ metadata.gz: 52f730ddeb0df6293146ee102df2e607ffd6eb40
4
+ data.tar.gz: a772c3a94362b5229d7a61d220ba595af1adafe7
5
5
  SHA512:
6
- metadata.gz: f124f81f470089002bf9ea67a1a2ea9ff82133d189b3db6e95c0d98091413ef8903d97f0d339be19a88908adc1d5d61b66a114e684e7b038925cef31d3dd56c1
7
- data.tar.gz: e804a8998daabbc564ac50559d45a95e2706c1dc471019136e8e70e0a6e177af4bfaf29d34230c9a276d974c976eee44fecdd1ba7394f8e343c3bdc79a4918fc
6
+ metadata.gz: 60eb8b142bc67a077ab0257e979ed866a632a9a05f24db438ee25824322c3256b5aa82de9738d925bde6e427b7702440712028328c1dc8a0257dd82b7505a67b
7
+ data.tar.gz: 10ea57a3292d9c28f96da651d10e51bea8f0d83b4a31faeaa6f07f6dbc0417f7d937b79ac2650acd0651439206b1d162c0b89564051996e5cc1e101f73928e4d
@@ -19,6 +19,8 @@ Gem::Specification.new do |spec|
19
19
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
20
  spec.require_paths = ["lib"]
21
21
 
22
+ spec.add_runtime_dependency 'recursive-open-struct'
23
+
22
24
  spec.add_development_dependency "bundler", "~> 1.6"
23
25
  spec.add_development_dependency "rake"
24
26
  spec.add_development_dependency "rspec"
@@ -1,3 +1,4 @@
1
+ require 'recursive-open-struct'
1
2
  module AlexaObjects
2
3
  class EchoRequest
3
4
  attr_reader :intent_name, :slots, :timestamp, :request_type, :session_new, :user_id, :access_token, :application_id
@@ -44,9 +45,7 @@ module AlexaObjects
44
45
 
45
46
  private
46
47
  def build_struct(hash)
47
- if hash.nil?
48
- nil
49
- else
48
+ unless hash.nil?
50
49
  slot_names = hash.keys.map {|k| k.to_sym.downcase }
51
50
  slot_values = hash.values.map { |v| v["value"] }
52
51
  Struct.new(*slot_names).new(*slot_values)
@@ -2,15 +2,15 @@ module AlexaObjects
2
2
  class Response
3
3
  attr_accessor :session_attributes, :spoken_response, :card_title, :card_content, :reprompt_text, :end_session, :speech_type, :text_type
4
4
 
5
- def initialize
6
- @session_attributes = {}
7
- @speech_type = "PlainText"
8
- @spoken_response = nil
9
- @card_title = nil
10
- @card_content = nil
11
- @reprompt_text = nil
12
- @text_type = "text"
13
- @end_session = true
5
+ def initialize(params={})
6
+ @session_attributes = params[:session_attributes] || {}
7
+ @speech_type = params[:speech_type] || "PlainText"
8
+ @spoken_response = params[:spoken_response] || nil
9
+ @card_title = params[:card_title] || nil
10
+ @card_content = params[:card_content] || nil
11
+ @reprompt_text = params[:reprompt_text] || nil
12
+ @text_type = params[:text_type] || "text"
13
+ @end_session = params[:end_session] || true
14
14
  end
15
15
 
16
16
  def add_attribute(key, value)
@@ -21,8 +21,8 @@ module AlexaObjects
21
21
  @session_attributes[key] << value if @session_attributes[key]
22
22
  end
23
23
 
24
- def with_card
25
- {
24
+ def to_hash(with_card: false)
25
+ hash = {
26
26
  "version" => "2.0",
27
27
  "sessionAttributes" => @session_attributes,
28
28
  "response" => {
@@ -44,14 +44,16 @@ module AlexaObjects
44
44
  "shouldEndSession" => end_session
45
45
  }
46
46
  }
47
+
48
+ return with_card ? hash : hash.tap { |hs| hs["response"].delete("card") }
47
49
  end
48
50
 
49
51
  def link_card
50
- self.with_card.tap { |hs| hs["response"]["card"] = {"type" => "LinkAccount"} }
52
+ self.hash(with_card: true).tap { |hs| hs["response"]["card"] = {"type" => "LinkAccount"} }
51
53
  end
52
54
 
53
- def without_card
54
- self.with_card.tap { |hs| hs["response"].delete("card") }
55
+ def to_json(with_card: false)
56
+ return self.to_hash(with_card: with_card).to_json
55
57
  end
56
58
  end
57
59
  end
@@ -1,3 +1,3 @@
1
1
  module AlexaObjects
2
- VERSION = "1.0.5"
2
+ VERSION = "1.0.6"
3
3
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alexa_objects
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.5
4
+ version: 1.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kyle Lucas
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-12 00:00:00.000000000 Z
11
+ date: 2016-02-17 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: recursive-open-struct
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: bundler
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -131,7 +145,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
131
145
  version: '0'
132
146
  requirements: []
133
147
  rubyforge_project:
134
- rubygems_version: 2.2.2
148
+ rubygems_version: 2.4.8
135
149
  signing_key:
136
150
  specification_version: 4
137
151
  summary: A pairing of objects for parsing Amazon Echo/Alexa skill requests.