att_speech 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -15,26 +15,27 @@ gem install att_speech
15
15
  ```ruby
16
16
  require 'att_speech'
17
17
 
18
- api_key = 'foo'
19
- secret_key = 'bar'
18
+ att_speech = ATTSpeech.new({ :api_key => ENV['ATT_SPEECH_KEY'],
19
+ :secret_key => ENV['ATT_SPEECH_SECRET'] })
20
20
 
21
- att_speech = ATTSpeech.new(api_key, secret_key)
21
+ # Read the audio file contents
22
+ file_contents = File.read(File.expand_path(File.dirname(File.dirname(__FILE__))) + "/bostonSeltics.wav")
22
23
 
23
24
  # Blocking operation
24
- p att_speech.speech_to_text('bostonSeltics.wav', type='audio/wav')
25
- #<Hashie::Mash recognition=#<Hashie::Mash n_best=#<Hashie::Mash confidence=1 grade="accept" hypothesis="Boston celtics." language_id="en-us" result_text="Boston celtics." word_scores=[1, 1] words=["Boston", "celtics."]> response_id="452d848c6d1a4be3f2bc987e5201ae38">>
25
+ p att_speech.speech_to_text(file_contents, type='audio/wav')
26
26
 
27
27
  # Non-blocking operation with a future, if you have a longer file that requires more processing time
28
- future = att_speech.future(:speech_to_text, 'bostinSeltics.wav', type='audio/wav')
28
+ sleep 2
29
+ future = att_speech.future(:speech_to_text, file_contents, type='audio/wav')
29
30
  p future.value
30
- #<Hashie::Mash recognition=#<Hashie::Mash n_best=#<Hashie::Mash confidence=1 grade="accept" hypothesis="Boston celtics." language_id="en-us" result_text="Boston celtics." word_scores=[1, 1] words=["Boston", "celtics."]> response_id="452d848c6d1a4be3f2bc987e5201ae38">>
31
31
 
32
32
  # Non-blocking operation that will call a block when the transcrption is returned
33
33
  # Note: Remember, this is a concurrent operation so don't pass self and avoid mutable objects in the block
34
34
  # from the calling context, better to have discreet actions contained in the block, such as inserting in a
35
- # datastore or POSTing to a REST webservice as a callback
36
- att_speech.speech_to_text!('spec/spec_helper.rb') { |transcription| p transcription }
37
- #<Hashie::Mash recognition=#<Hashie::Mash n_best=#<Hashie::Mash confidence=1 grade="accept" hypothesis="Boston celtics." language_id="en-us" result_text="Boston celtics." word_scores=[1, 1] words=["Boston", "celtics."]> response_id="452d848c6d1a4be3f2bc987e5201ae38">>
35
+ # datastore
36
+ sleep 2
37
+ att_speech.speech_to_text!(file_contents) { |transcription| p transcription }
38
+ sleep 5
38
39
  ```
39
40
 
40
41
  ## Copyright
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.2
1
+ 0.0.3
@@ -2,21 +2,41 @@ class ATTSpeech
2
2
  include Celluloid
3
3
  Celluloid.logger = nil
4
4
 
5
- attr_reader :api_key, :secret_key, :access_token, :refresh_token
5
+ attr_reader :api_key, :secret_key, :access_token, :refresh_token, :base_url, :ssl_verify
6
6
 
7
7
  ##
8
8
  # Creates an ATTSpeech object
9
9
  #
10
- # @param [String] api_key
11
- # @param [String] secret_key
12
- # @param [String] base_url
10
+ # @overload initialize(args)
11
+ # @param [Hash] args the options to intantiate with
12
+ # @option args [String] :api_key the AT&T Speech API Key
13
+ # @option args [String] :secret_key the AT&T Speech API Secret Key
14
+ # @option args [String] :base_url the url for the AT&T Speech API, default is 'https://api.att.com'
15
+ # @option args [Boolean] :ssl_verify determines if the peer Cert is verified for SSL, default is true
16
+ # @overload initialize(api_key, secret_key, base_url='https://api.att.com')
17
+ # @param [String] api_key the AT&T Speech API Key
18
+ # @param [String] secret_key the AT&T Speech API Secret Key
19
+ # @param [String] base_url, the url for the AT&T Speech API, default is 'https://api.att.com'
20
+ # @param [Boolean] ssl_verify determines if the peer Cert is verified for SSL, default is true
13
21
  #
14
22
  # @return [Object] an instance of ATTSpeech
15
- def initialize(api_key, secret_key, base_url='https://api.att.com')
16
- @signaled = false
17
- @api_key = api_key
18
- @secret_key = secret_key
19
- @base_url = base_url
23
+ def initialize(*args)
24
+ raise ArgumentError, "Requres at least the api_key and secret_key when instatiating" if args.size == 0
25
+
26
+ base_url = 'https://api.att.com'
27
+
28
+ if args.size == 1 && args[0].instance_of?(Hash)
29
+ @api_key = args[0][:api_key]
30
+ @secret_key = args[0][:secret_key]
31
+ @base_url = args[0][:base_url] || base_url
32
+ set_ssl_verify args[0][:ssl_verify]
33
+ else
34
+ @api_key = args[0]
35
+ @secret_key = args[1]
36
+ @base_url = args[2] || base_url
37
+ set_ssl_verify args[3]
38
+ end
39
+
20
40
  @grant_type = 'client_credentials'
21
41
  @scope = 'SPEECH'
22
42
  @access_token = ''
@@ -64,7 +84,7 @@ class ATTSpeech
64
84
  ##
65
85
  # Creates the Faraday connection object
66
86
  def create_connection
67
- @connection = Faraday.new(:url => @base_url) do |faraday|
87
+ @connection = Faraday.new(:url => @base_url, :ssl => { :verify => @ssl_verify }) do |faraday|
68
88
  faraday.headers['Accept'] = 'application/json'
69
89
  faraday.adapter Faraday.default_adapter
70
90
  end
@@ -106,6 +126,18 @@ class ATTSpeech
106
126
  Hashie::Mash.new(underscore_hash(JSON.parse(response.body)))
107
127
  end
108
128
 
129
+ ##
130
+ # Sets the ssl_verify option
131
+ #
132
+ # @param [Boolean] ssl_verify the variable to set
133
+ def set_ssl_verify(ssl_verify)
134
+ if ssl_verify == false
135
+ @ssl_verify = false
136
+ else
137
+ @ssl_verify = true
138
+ end
139
+ end
140
+
109
141
  ##
110
142
  # Decamelizes the keys in a hash to be more Ruby friendly
111
143
  #
@@ -1,3 +1,3 @@
1
1
  class ATTSpeech
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -2,37 +2,83 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
2
 
3
3
  describe "AttSpeech" do
4
4
  FakeWeb.allow_net_connect = false
5
+
5
6
  FakeWeb.register_uri(:post,
6
7
  "https://api.att.com/oauth/access_token?client_id=1234&client_secret=abcd&grant_type=client_credentials&scope=SPEECH",
7
8
  :status => ['200', 'OK'],
8
9
  :body => '{"access_token":"5678","refresh_token":"wxyz"}')
9
10
 
11
+ FakeWeb.register_uri(:post,
12
+ "http://foobar.com/oauth/access_token?client_id=1234&client_secret=abcd&grant_type=client_credentials&scope=SPEECH",
13
+ :status => ['200', 'OK'],
14
+ :body => '{"access_token":"5678","refresh_token":"wxyz"}')
15
+
10
16
  FakeWeb.register_uri(:post,
11
17
  "https://api.att.com/rest/1/SpeechToText",
12
18
  :status => ['200', 'OK'],
13
19
  :body => "{\"Recognition\":{\"ResponseId\":\"2b0bdcf4301f5c4aba57e2765b59bcbe\",\"NBest\":[{\"WordScores\":[1,1],\"Confidence\":1,\"Grade\":\"accept\",\"ResultText\":\"Boston celtics.\",\"Words\":[\"Boston\",\"celtics.\"],\"LanguageId\":\"en-us\",\"Hypothesis\":\"Boston celtics.\"}]}}")
14
20
 
15
- let(:att_speech) { att_speech = ATTSpeech.new '1234', 'abcd' }
21
+ let(:att_speech) { att_speech = ATTSpeech.new '1234', 'abcd' }
22
+ let(:att_speech_hash) { att_speech = ATTSpeech.new({ :api_key => '1234',
23
+ :secret_key => 'abcd' })}
16
24
 
17
- it "should create an ATTSpeech object" do
18
- att_speech.class.should eql ATTSpeech
19
- end
25
+ describe 'initializing' do
26
+ it "should raise an error of no parameters passed when creating object" do
27
+ begin
28
+ ATTSpeech.new
29
+ rescue => e
30
+ e.to_s.should eql "Requres at least the api_key and secret_key when instatiating"
31
+ end
32
+ end
33
+
34
+ it "should create an ATTSpeech object" do
35
+ att_speech.class.should eql ATTSpeech
36
+ att_speech_hash.class.should eql ATTSpeech
37
+ end
38
+
39
+ it 'should set the url to something different' do
40
+ as = ATTSpeech.new('1234', 'abcd', 'http://foobar.com', false)
41
+ as.base_url.should == 'http://foobar.com'
42
+ as.ssl_verify.should == false
43
+
44
+ as = ATTSpeech.new({ :api_key => '1234',
45
+ :secret_key => 'abcd',
46
+ :base_url => 'http://foobar.com',
47
+ :ssl_verify => false })
48
+ as.base_url.should == 'http://foobar.com'
49
+ as.ssl_verify.should == false
50
+ end
20
51
 
21
- it "should set the access_token and refresh_token" do
22
- att_speech.access_token.should eql '5678'
23
- att_speech.refresh_token.should eql 'wxyz'
52
+ it "should set the access_token and refresh_token" do
53
+ att_speech.access_token.should eql '5678'
54
+ att_speech.refresh_token.should eql 'wxyz'
55
+ att_speech.base_url.should == 'https://api.att.com'
56
+ att_speech.ssl_verify.should == true
57
+
58
+ att_speech_hash.access_token.should eql '5678'
59
+ att_speech_hash.refresh_token.should eql 'wxyz'
60
+ att_speech_hash.base_url.should == 'https://api.att.com'
61
+ att_speech_hash.ssl_verify.should == true
62
+ end
24
63
  end
25
64
 
26
65
  describe 'blocking call' do
27
66
  it "should return a Hashie::Mash object when processing an audio file" do
28
67
  result = att_speech.speech_to_text 'spec/spec_helper.rb'
29
68
  result.instance_of?(Hashie::Mash).should eql true
69
+
70
+ result = att_speech_hash.speech_to_text 'spec/spec_helper.rb'
71
+ result.instance_of?(Hashie::Mash).should eql true
30
72
  end
31
73
 
32
74
  it "should attempt to process an audio file" do
33
75
  result = att_speech.speech_to_text 'spec/spec_helper.rb'
34
76
  result[:recognition][:response_id].should eql '2b0bdcf4301f5c4aba57e2765b59bcbe'
35
77
  result[:recognition][:n_best][:confidence].should eql 1
78
+
79
+ result = att_speech_hash.speech_to_text 'spec/spec_helper.rb'
80
+ result[:recognition][:response_id].should eql '2b0bdcf4301f5c4aba57e2765b59bcbe'
81
+ result[:recognition][:n_best][:confidence].should eql 1
36
82
  end
37
83
  end
38
84
 
@@ -40,12 +86,19 @@ describe "AttSpeech" do
40
86
  it "should return a Celluloid::Future object when processing an audio file" do
41
87
  future = att_speech.future(:speech_to_text, 'spec/spec_helper.rb')
42
88
  future.instance_of?(Celluloid::Future).should eql true
89
+
90
+ future = att_speech_hash.future(:speech_to_text, 'spec/spec_helper.rb')
91
+ future.instance_of?(Celluloid::Future).should eql true
43
92
  end
44
93
 
45
94
  it "should allow us to use a future to process an audio file" do
46
95
  future = att_speech.future(:speech_to_text, 'spec/spec_helper.rb')
47
96
  future.value[:recognition][:response_id].should eql '2b0bdcf4301f5c4aba57e2765b59bcbe'
48
97
  future.value[:recognition][:n_best][:confidence].should eql 1
98
+
99
+ future = att_speech_hash.future(:speech_to_text, 'spec/spec_helper.rb')
100
+ future.value[:recognition][:response_id].should eql '2b0bdcf4301f5c4aba57e2765b59bcbe'
101
+ future.value[:recognition][:n_best][:confidence].should eql 1
49
102
  end
50
103
  end
51
104
 
@@ -56,6 +109,12 @@ describe "AttSpeech" do
56
109
  sleep 0.5
57
110
  result[:recognition][:response_id].should eql '2b0bdcf4301f5c4aba57e2765b59bcbe'
58
111
  result[:recognition][:n_best][:confidence].should eql 1
112
+
113
+ result = nil
114
+ att_speech_hash.speech_to_text!('spec/spec_helper.rb') { |transcription| result = transcription }
115
+ sleep 0.5
116
+ result[:recognition][:response_id].should eql '2b0bdcf4301f5c4aba57e2765b59bcbe'
117
+ result[:recognition][:n_best][:confidence].should eql 1
59
118
  end
60
119
  end
61
120
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: att_speech
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: