wit-ruby2 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 6664f7034fc0a92cf6aacee77a91b8ab6da495e1
4
+ data.tar.gz: 2df625719fbe488b0d03b692c49b89b6de99912d
5
+ SHA512:
6
+ metadata.gz: f9b0bd748340cd058f77382b1d423fc9d1b8d274fd723e44c6edd70248c554683493a624aec1f53c355d5c870fde3dd42232dd370fa27c26fddefa443a112244
7
+ data.tar.gz: 291690b012e58bd93d6a734360e2605e1fd1bef4ee5b0a1ea6892a4aab5e7386aa532676675da267c20aefa9825fd164e7b091d4cc04883958620172034a4621
@@ -0,0 +1,3 @@
1
+ .ruby-version
2
+ Gemfile.lock
3
+ pkg
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format documentation
2
+ --color
3
+ --require spec_helper
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
@@ -0,0 +1,22 @@
1
+ Copyright 2012 Jeremy Jackson / ModeSet
2
+
3
+ https://github.com/modeset/wit-ruby
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,49 @@
1
+ wit-ruby2
2
+ ========
3
+
4
+ Easy interface for interacting with the [Wit.ai](http://wit.ai) natural language parsing API.
5
+
6
+ Initially a fork of: [wit-ruby](https://github.com/modeset/wit-ruby)
7
+
8
+ This project will expand as the Wit.ai API expands, but as it stands there's a single endpoint. You can hit this
9
+ endpoint easily with `Wit.message([your message])`, which uses Wit.ai to convert that phrase or sentence into an object
10
+ with an intent, and entities if any are available.
11
+
12
+ You will need to create a Wit.ai account and begin training it.
13
+
14
+ ## Installation
15
+
16
+ ```ruby
17
+ gem 'wit-ruby2', '>= 0.0.3'
18
+ ```
19
+
20
+ ## Usage
21
+
22
+ ```ruby
23
+ require 'wit-ruby2'
24
+
25
+ client = Wit::Client.new("WIT_TOKEN")
26
+
27
+ result = client.classify_message('Hi')
28
+
29
+ result.intent # will be Hello with the default Wit instance.
30
+ result.confidence # the confidence score of the classification
31
+ result.entities # A hash of entity types
32
+ result.entities["location"].first.value # the value of the first location extracted
33
+ ```
34
+
35
+ ### Result properties/methods
36
+
37
+ * *id* The unique message id provided back from Wit.
38
+ * *text* The original message sent.
39
+ * *intent* The intent, as determined by Wit.
40
+ * *confidence* The confidence level that Wit determined.
41
+ * *entities* Hash of entities, which contains an array of n extracted entities
42
+
43
+ ### Entity properties/methods
44
+
45
+ * *value*: the value extracted by wit
46
+
47
+ ## License
48
+
49
+ Licensed under the [MIT License](http://creativecommons.org/licenses/MIT/)
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
@@ -0,0 +1,4 @@
1
+ require 'wit/version'
2
+ require 'wit/wit'
3
+ require 'wit/result'
4
+ require 'wit/client'
@@ -0,0 +1,30 @@
1
+ module Wit
2
+ class Client
3
+ attr_accessor :token
4
+
5
+ def initialize(token)
6
+ @token = token
7
+ end
8
+
9
+ def classify_message(message = '')
10
+ response = connection.get do |req|
11
+ req.headers['Authorization'] = "Bearer #{token}"
12
+ req.url '/message', q: message
13
+ end
14
+
15
+ case response.status
16
+ when 200 then return Result.new JSON.parse(response.body)
17
+ when 401 then raise Unauthorized, "incorrect token"
18
+ else raise BadResponse, "response code: #{response.status}"
19
+ end
20
+ end
21
+
22
+ private
23
+
24
+ def connection
25
+ @connection ||= Faraday.new url: 'https://api.wit.ai' do |faraday|
26
+ faraday.adapter Faraday.default_adapter
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,5 @@
1
+ class EntityCollection < OpenStruct
2
+ def [](name)
3
+ send(name.to_sym)
4
+ end
5
+ end
@@ -0,0 +1,21 @@
1
+ module Wit
2
+ class Result
3
+ attr_reader :id, :text, :intent, :confidence, :entities
4
+
5
+ def initialize(hash)
6
+ @id = hash['msg_id']
7
+ @text = hash['_text']
8
+ outcomes = hash['outcomes'].first
9
+ if outcomes
10
+ @intent = outcomes['intent']
11
+ @confidence = outcomes['confidence']
12
+ @entities = {}
13
+ outcomes['entities'].each do |name, entity|
14
+ @entities[name] = entity.map do |e|
15
+ OpenStruct.new(e)
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,3 @@
1
+ module Wit
2
+ VERSION = '0.0.3'
3
+ end
@@ -0,0 +1,8 @@
1
+ require 'faraday'
2
+ require 'json'
3
+ require 'ostruct'
4
+
5
+ module Wit
6
+ class Unauthorized < Exception; end
7
+ class BadResponse < Exception; end
8
+ end
@@ -0,0 +1,36 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api.wit.ai/message?q=test
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Faraday v0.9.2
12
+ Authorization:
13
+ - Bearer 1234
14
+ Accept-Encoding:
15
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
16
+ Accept:
17
+ - "*/*"
18
+ response:
19
+ status:
20
+ code: 400
21
+ message: Bad Request
22
+ headers:
23
+ Server:
24
+ - nginx/1.8.0
25
+ Date:
26
+ - Fri, 22 Jan 2016 18:43:17 GMT
27
+ Content-Length:
28
+ - '28'
29
+ Connection:
30
+ - keep-alive
31
+ body:
32
+ encoding: UTF-8
33
+ string: Bad auth, check token/params
34
+ http_version:
35
+ recorded_at: Fri, 22 Jan 2016 18:43:17 GMT
36
+ recorded_with: VCR 3.0.1
@@ -0,0 +1,48 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api.wit.ai/message?q=non%20je%20n%27aime%20pas%20les%20pommes
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Faraday v0.9.2
12
+ Authorization:
13
+ - Bearer <WIT_TOKEN>
14
+ Accept-Encoding:
15
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
16
+ Accept:
17
+ - "*/*"
18
+ response:
19
+ status:
20
+ code: 200
21
+ message: OK
22
+ headers:
23
+ Server:
24
+ - nginx/1.8.0
25
+ Date:
26
+ - Fri, 22 Jan 2016 18:03:48 GMT
27
+ Content-Type:
28
+ - application/json
29
+ Content-Length:
30
+ - '245'
31
+ Connection:
32
+ - keep-alive
33
+ body:
34
+ encoding: UTF-8
35
+ string: |-
36
+ {
37
+ "msg_id" : "ed83fafe-62c5-43f7-9b29-fce46e8aef43",
38
+ "_text" : "non je n'aime pas les pommes",
39
+ "outcomes" : [ {
40
+ "_text" : "non je n'aime pas les pommes",
41
+ "confidence" : 0.575,
42
+ "intent" : "Location",
43
+ "entities" : { }
44
+ } ]
45
+ }
46
+ http_version:
47
+ recorded_at: Fri, 22 Jan 2016 18:03:48 GMT
48
+ recorded_with: VCR 3.0.1
@@ -0,0 +1,48 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api.wit.ai/message?q=test
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Faraday v0.9.2
12
+ Authorization:
13
+ - Bearer <WIT_TOKEN>
14
+ Accept-Encoding:
15
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
16
+ Accept:
17
+ - "*/*"
18
+ response:
19
+ status:
20
+ code: 200
21
+ message: OK
22
+ headers:
23
+ Server:
24
+ - nginx/1.8.0
25
+ Date:
26
+ - Fri, 22 Jan 2016 18:43:17 GMT
27
+ Content-Type:
28
+ - application/json
29
+ Content-Length:
30
+ - '197'
31
+ Connection:
32
+ - keep-alive
33
+ body:
34
+ encoding: UTF-8
35
+ string: |-
36
+ {
37
+ "msg_id" : "b48beaf9-c4c2-4bcf-a467-d6947815d2a3",
38
+ "_text" : "test",
39
+ "outcomes" : [ {
40
+ "_text" : "test",
41
+ "confidence" : 0.575,
42
+ "intent" : "Location",
43
+ "entities" : { }
44
+ } ]
45
+ }
46
+ http_version:
47
+ recorded_at: Fri, 22 Jan 2016 18:43:17 GMT
48
+ recorded_with: VCR 3.0.1
@@ -0,0 +1,36 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api.wit.ai/message?q=test
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Faraday v0.9.2
12
+ Authorization:
13
+ - Bearer
14
+ Accept-Encoding:
15
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
16
+ Accept:
17
+ - "*/*"
18
+ response:
19
+ status:
20
+ code: 400
21
+ message: Bad Request
22
+ headers:
23
+ Server:
24
+ - nginx/1.8.0
25
+ Date:
26
+ - Fri, 22 Jan 2016 18:43:18 GMT
27
+ Content-Length:
28
+ - '28'
29
+ Connection:
30
+ - keep-alive
31
+ body:
32
+ encoding: UTF-8
33
+ string: Bad auth, check token/params
34
+ http_version:
35
+ recorded_at: Fri, 22 Jan 2016 18:43:18 GMT
36
+ recorded_with: VCR 3.0.1
@@ -0,0 +1,46 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api.wit.ai/message?q=un%20bar%20pr%C3%A8s%20de%20paris?
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Faraday v0.9.2
12
+ Authorization:
13
+ - Bearer <WIT_TOKEN>
14
+ Accept-Encoding:
15
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
16
+ Accept:
17
+ - "*/*"
18
+ response:
19
+ status:
20
+ code: 200
21
+ message: OK
22
+ headers:
23
+ Server:
24
+ - nginx/1.8.0
25
+ Date:
26
+ - Fri, 22 Jan 2016 18:03:48 GMT
27
+ Content-Type:
28
+ - application/json
29
+ Content-Length:
30
+ - '350'
31
+ Connection:
32
+ - keep-alive
33
+ body:
34
+ encoding: ASCII-8BIT
35
+ string: !binary |-
36
+ ewogICJtc2dfaWQiIDogImFiODI5MDYyLTU3MWUtNGI5ZS1hOTQxLTg4YzEx
37
+ MjI4MjRmMSIsCiAgIl90ZXh0IiA6ICJ1biBiYXIgcHLDqHMgZGUgcGFyaXM/
38
+ IiwKICAib3V0Y29tZXMiIDogWyB7CiAgICAiX3RleHQiIDogInVuIGJhciBw
39
+ csOocyBkZSBwYXJpcz8iLAogICAgImNvbmZpZGVuY2UiIDogMC41NzUsCiAg
40
+ ICAiaW50ZW50IiA6ICJMb2NhdGlvbiIsCiAgICAiZW50aXRpZXMiIDogewog
41
+ ICAgICAibG9jYXRpb24iIDogWyB7CiAgICAgICAgInR5cGUiIDogInZhbHVl
42
+ IiwKICAgICAgICAidmFsdWUiIDogInBhcmlzIiwKICAgICAgICAic3VnZ2Vz
43
+ dGVkIiA6IHRydWUKICAgICAgfSBdCiAgICB9CiAgfSBdCn0=
44
+ http_version:
45
+ recorded_at: Fri, 22 Jan 2016 18:03:48 GMT
46
+ recorded_with: VCR 3.0.1
@@ -0,0 +1,18 @@
1
+ require 'wit-ruby2'
2
+
3
+ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
4
+ require 'vcr'
5
+ require 'webmock/rspec'
6
+
7
+ RSpec.configure do |config|
8
+ config.before(:suite) do
9
+ $token = ENV['WIT_TOKEN']
10
+ end
11
+ end
12
+
13
+ VCR.configure do |config|
14
+ config.cassette_library_dir = "spec/fixtures/vcr"
15
+ config.hook_into :webmock
16
+ config.configure_rspec_metadata!
17
+ config.filter_sensitive_data("<WIT_TOKEN>") { $token }
18
+ end
@@ -0,0 +1,29 @@
1
+ describe Wit::Client do
2
+
3
+ subject do
4
+ Wit::Client.new(token).classify_message("test")
5
+ end
6
+
7
+ let(:token) {$token}
8
+
9
+ context "happy path", vcr: {cassette_name: 'happy_path'} do
10
+ it "initializes a result" do
11
+ expect(Wit::Result).to receive(:new)
12
+ subject
13
+ end
14
+ end
15
+
16
+ context "bad token", vcr: {cassette_name: 'bad_token'} do
17
+ let(:token) {'1234'}
18
+ it "raises Unauthorized" do
19
+ expect{subject}.to raise_exception(Wit::BadResponse, "response code: 400")
20
+ end
21
+ end
22
+
23
+ context "other error", vcr: {cassette_name: 'no_token'} do
24
+ let(:token) {nil}
25
+ it "raises a BadResponse with its code" do
26
+ expect{subject}.to raise_exception(Wit::BadResponse, "response code: 400")
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,45 @@
1
+ describe Wit::Result do
2
+ let(:text) {'un bar près de paris?'}
3
+
4
+ subject do
5
+ Wit::Client.new($token).classify_message(text)
6
+ end
7
+
8
+ context "standard request with all the type of contents", vcr: {cassette_name: 'standard_request'} do
9
+ it "sets the id" do
10
+ expect(subject.id).not_to be_nil
11
+ end
12
+
13
+ it "sets the text" do
14
+ expect(subject.text).to eq text
15
+ end
16
+
17
+ it "sets the intent" do
18
+ expect(subject.intent).to eq "Location"
19
+ end
20
+
21
+ it "sets the confidence" do
22
+ expect(subject.confidence).to be > 0
23
+ end
24
+
25
+ context "for each entities" do
26
+ let (:entities) {subject.entities}
27
+
28
+ it "contains a value" do
29
+ expect(entities["location"].first.value).to eq "paris"
30
+ end
31
+ end
32
+ end
33
+
34
+ context "request without entities", vcr: {cassette_name: 'empty_entities_request'} do
35
+ let(:text) {"non je n'aime pas les pommes"}
36
+
37
+ it "doesn't fail" do
38
+ subject
39
+ end
40
+
41
+ it "has an empty entities array" do
42
+ expect(subject.entities).to be_truthy
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,8 @@
1
+ describe Wit do
2
+ it "defines 2 exceptions classes" do
3
+ expect do
4
+ Wit::Unauthorized.new
5
+ Wit::BadResponse.new
6
+ end.not_to raise_exception
7
+ end
8
+ end
@@ -0,0 +1,28 @@
1
+ lib = File.expand_path('../lib', __FILE__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+
4
+ require 'wit/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'wit-ruby2'
8
+ spec.version = Wit::VERSION
9
+ spec.authors = ['Jeremy Jackson', 'Zaratan']
10
+ spec.email = ['tech@hellojam.fr']
11
+ spec.license = 'MIT'
12
+ spec.homepage = 'https://github.com/blackbirdco/wit-ruby2'
13
+ spec.summary = %Q{wit-ruby: Easy interface for wit.ai}
14
+ spec.description = %Q{A simple library for interacting with wit.ai -- will expand as the api does}
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_dependency "faraday", ">= 0.8.8"
22
+
23
+ spec.add_development_dependency "bundler", "~> 1.6"
24
+ spec.add_development_dependency "rake"
25
+ spec.add_development_dependency "rspec"
26
+ spec.add_development_dependency "vcr"
27
+ spec.add_development_dependency "webmock"
28
+ end
metadata ADDED
@@ -0,0 +1,161 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: wit-ruby2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.3
5
+ platform: ruby
6
+ authors:
7
+ - Jeremy Jackson
8
+ - Zaratan
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2016-01-22 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: faraday
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: 0.8.8
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: 0.8.8
28
+ - !ruby/object:Gem::Dependency
29
+ name: bundler
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: '1.6'
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: '1.6'
42
+ - !ruby/object:Gem::Dependency
43
+ name: rake
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ - !ruby/object:Gem::Dependency
57
+ name: rspec
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: vcr
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ - !ruby/object:Gem::Dependency
85
+ name: webmock
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ description: A simple library for interacting with wit.ai -- will expand as the api
99
+ does
100
+ email:
101
+ - tech@hellojam.fr
102
+ executables: []
103
+ extensions: []
104
+ extra_rdoc_files: []
105
+ files:
106
+ - ".gitignore"
107
+ - ".rspec"
108
+ - Gemfile
109
+ - MIT.LICENSE
110
+ - README.md
111
+ - Rakefile
112
+ - lib/wit-ruby2.rb
113
+ - lib/wit/client.rb
114
+ - lib/wit/entity.rb
115
+ - lib/wit/result.rb
116
+ - lib/wit/version.rb
117
+ - lib/wit/wit.rb
118
+ - spec/fixtures/vcr/bad_token.yml
119
+ - spec/fixtures/vcr/empty_entities_request.yml
120
+ - spec/fixtures/vcr/happy_path.yml
121
+ - spec/fixtures/vcr/no_token.yml
122
+ - spec/fixtures/vcr/standard_request.yml
123
+ - spec/spec_helper.rb
124
+ - spec/wit/client_spec.rb
125
+ - spec/wit/result_spec.rb
126
+ - spec/wit/wit_spec.rb
127
+ - wit-ruby2.gemspec
128
+ homepage: https://github.com/blackbirdco/wit-ruby2
129
+ licenses:
130
+ - MIT
131
+ metadata: {}
132
+ post_install_message:
133
+ rdoc_options: []
134
+ require_paths:
135
+ - lib
136
+ required_ruby_version: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - ">="
139
+ - !ruby/object:Gem::Version
140
+ version: '0'
141
+ required_rubygems_version: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ requirements: []
147
+ rubyforge_project:
148
+ rubygems_version: 2.4.8
149
+ signing_key:
150
+ specification_version: 4
151
+ summary: 'wit-ruby: Easy interface for wit.ai'
152
+ test_files:
153
+ - spec/fixtures/vcr/bad_token.yml
154
+ - spec/fixtures/vcr/empty_entities_request.yml
155
+ - spec/fixtures/vcr/happy_path.yml
156
+ - spec/fixtures/vcr/no_token.yml
157
+ - spec/fixtures/vcr/standard_request.yml
158
+ - spec/spec_helper.rb
159
+ - spec/wit/client_spec.rb
160
+ - spec/wit/result_spec.rb
161
+ - spec/wit/wit_spec.rb