transcribeme 1.0.0.beta → 1.0.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: 23b3a093592b85656762ec0032b8f3fa97ec6207
4
- data.tar.gz: aa03e89273d1f655371f8b0010b7593aefead40a
3
+ metadata.gz: 43e368c48c116a708dbccda72fcd53bbd7806b6d
4
+ data.tar.gz: 6e0539e5685c05334515b4eafae526d848aee3d8
5
5
  SHA512:
6
- metadata.gz: f48989a92f98d16306b82277a31922184a86b38bd77524a119d5eff4af61b2fb0c0d43fb1a828043432241515557e3acd9598f40adf8c5877de154d94ac13354
7
- data.tar.gz: 2c8dd584070feff6d3bccc6d9abf09a92d205ca7eb19bf26fe72cfc0feabdf9a66c4facf7557b4eb6de6345bcee8cc33fdccfc5da41f0e0d0e66b8e854483a26
6
+ metadata.gz: 8a894f41121bf13ebf66662820d98348f038fdc1c49da7eaa81abac75360dd8a77c2fb74191cf703ef51577382724e66dafc5041d8c50034f32328aca110eee7
7
+ data.tar.gz: 61df26e41e3f1307b1cfb8a5d117416b525c7c33ee14c35ba7f27599fe37b481dfa0aa328e514544a84d8771415d5803797f686f706950922e03f47176585a78
Binary file
data.tar.gz.sig CHANGED
Binary file
data/.gitignore CHANGED
@@ -18,4 +18,5 @@ test/tmp
18
18
  test/version_tmp
19
19
  tmp
20
20
  .ruby-gemset
21
- .ruby-version
21
+ .ruby-version
22
+ pkg/
data/README.md CHANGED
@@ -10,11 +10,7 @@
10
10
 
11
11
  This gem is a Ruby wrapper for the TranscribeMe SOAP API, built on Savon, and includes some extra dangly bits for uploading to Windows Azure Blob storage.
12
12
 
13
- The DSL may change before 1.0.0 stable is released.
14
-
15
- Changes from prior 1.0.0 include bringing the Ruby method names in line with the actual SOAP action names.
16
-
17
- This gem wants to make it easy for you. If you call the 'sign_in' method before initializing a session then we all know you meant to. We'll jump right in there and initialize it for you.
13
+ This gem wants to make it easy for you. It tries, at least. If you call the 'sign_in' method before initializing a session then we all know you meant to. We'll jump right in there and initialize it for you.
18
14
 
19
15
  ## Prerequisites
20
16
 
@@ -36,100 +32,7 @@ Or install it yourself as:
36
32
 
37
33
  ## Usage
38
34
 
39
- To get a file transcribed with this gem, this is the workflow:
40
-
41
- - Sign in as a Customer
42
- - Upload a file
43
- - Submit for transcription (possibly with a Promocode)
44
-
45
-
46
- #### Signing in
47
-
48
- To create a new instance of the API client
49
-
50
- client = TranscribeMe::API::Client.new
51
-
52
- API Sessions have a lifetime of 1 hour. When we sign in as a user an API session will be created if it is either no longer valid or not yet initialized.
53
-
54
- client.sign_in 'example@transcribeme.com', 'example'
55
-
56
- GUIDs are prolific. Your session id is a GUID, and will be available in `client.session_id` but the result of signing in will return your Customer ID. Don't worry, you won't need this.
57
-
58
- #### Getting a list of recordings
59
-
60
- To get your recordings, call the `get_recordings` method:
61
-
62
- recordings = client.get_recordings
63
-
64
- This will return an array of hashes. These hashes have the following keys: `:date_created`, `:duration`, `:id`, `:name` and `:status`.
65
-
66
- TODO: Status is currently slightly cryptic, and this will improve.
67
-
68
- "10" # => Ready for transcription
69
- "40" # => In Progress
70
- "50" # => Complete
71
-
72
- using `Array#select` you can filter for recordings that are in progress, complete or ready for transcription. This will be refactored post 1.0.0.
73
-
74
- Array#select examples:
75
-
76
- completed = recordings.select {|x| x[:status] == "50"}
77
- in_progress = recordings.select {|x| x[:status] == "40"}
78
- ready = recordings.select {|x| x[:status] == "10"}
79
-
80
- #### Uploading recordings
81
-
82
- ###### Prerequisites
83
-
84
- NOTE: This piece of functionality (and actually only this) relies on FFMPEG and the `streamio-ffmpeg` Ruby gem, unless you explicitly state the duration of the audio in an options hash.
85
-
86
- On Ubuntu:
87
-
88
- sudo apt-get install ffmpeg
89
-
90
- (or your Linux package manager to install the ffmpeg package)
91
-
92
- On Mac:
93
-
94
- Get [Homebrew](http://brew.sh/) and then
95
-
96
- brew install ffmpeg
97
-
98
-
99
- Not yet tested on Windows environments. Feel free to send feedback / advice on an FFMPEG alternative.
100
-
101
-
102
- RubyMotion - this gem uses synchronous connections, and other stuff making it inappropriate. A RubyMotion-specific gem is in the works.
103
-
104
- ###### Actually uploading files
105
-
106
- client.upload 'my_cool_file.mp3'
107
-
108
- That's pretty easy, right?
109
-
110
- Or you can also include a second argument, to overwrite the defaults.
111
-
112
- # options - a Hash with these keys:
113
- # :multiple_speakers - Boolean (default is true)
114
- # :duration - Float
115
- # :description - String
116
-
117
- client.upload 'my_cool_file.mp3', { duration: 12345.12, multiple_speakers: false, description: "Yo!" }
118
-
119
- This can take some time, as it first uses [Excon](http://excon.io/) to upload to Windows Azure Blob Storage, using the URL asked provided by the API. Once the upload to Windows Azure completes, it sends a SOAP request to the API to confirm the file name and details. The recording is then in the initial state - Status 10, Ready for Transcription.
120
-
121
- The return value is the response hash, which includes the Recording ID. This Recording ID is a GUID, and you may want to hold on to it. It will be available in the list of recordings.
122
-
123
- #### Submitting recordings for transcription
124
-
125
- If you have used the [web interface](https://portal.transcribeme.com) to set up payment you can use the transcribe_recording method like so:
126
-
127
- client.transcribe_recording '5e38e162-3e05-4f4d-82c1-010a34891fd8'
128
-
129
- or if you have a promo code:
130
-
131
- client.transcribe_recording_using_promocode '5e38e162-3e05-4f4d-82c1-010a34891fd8', 'MyPromoCodeRules'
132
-
35
+ See USAGE.md
133
36
 
134
37
  ## Documentation
135
38
 
@@ -141,14 +44,13 @@ The documentation can be [browsed online](http://rubydoc.info/github/tuttinator/
141
44
 
142
45
  Version 1.0.0 stable
143
46
 
144
- - [ ] Write specs
47
+ - [ ] Write specs (WIP)
145
48
  - [x] Set up Travis-CI and document supported Ruby versions
146
49
  - [x] Investigate Windows Azure Blob storage file upload
147
50
  - [x] Include Excon for Windows Azure Blob storage
148
51
  - [x] Base64 decrypt transcription results
149
52
  - [ ] Document SOAP calls and error messages
150
53
  - [ ] Complete YARD documentation
151
- - [ ] Include option (default)
152
54
  - [ ] Validations for GUIDs
153
55
  - [ ] Exceptions for error handling (about 50%)
154
56
  - [ ] Modelling Recording objects, particularly better describing recording status
data/USAGE.md CHANGED
@@ -1,27 +1,103 @@
1
- ### Design decisions
1
+ # Usage
2
2
 
3
- Interact directly with API calls like this:
3
+ To get a file transcribed with this gem, this is the workflow:
4
+
5
+ - Sign in as a Customer
6
+ - Upload a file
7
+ - Submit for transcription (possibly with a Promocode)
8
+
9
+
10
+ #### Signing in
11
+
12
+ To create a new instance of the API client
4
13
 
5
14
  client = TranscribeMe::API::Client.new
6
15
 
7
- client.login_as_customer({username: "customer@transcribeme.com", password: PASSWORD})
8
- client.recordings # => [List of recording instances...]
16
+ API Sessions have a lifetime of 1 hour. When we sign in as a user an API session will be created if it is either no longer valid or not yet initialized.
17
+
18
+ client.sign_in 'example@transcribeme.com', 'example'
19
+
20
+ GUIDs are prolific. Your session id is a GUID, and will be available in `client.session_id` but the result of signing in will return your Customer ID. Don't worry, you won't need this.
21
+
22
+ #### Getting a list of recordings
23
+
24
+ To get your recordings, call the `get_recordings` method:
25
+
26
+ recordings = client.get_recordings
27
+
28
+ This will return a object which holds an array of recording instances. These objects have the following keys: `:date_created`, `:duration`, `:id`, `:name`, `:status` and `:state`.
29
+
30
+ To view all the items in the array, use the `.list` or `.all` class methods.
31
+
32
+ The Recording class delegates methods to the array of recordings, but also includes convenience methods:
33
+
34
+ recordings.completed
35
+ recordings.in_progress
36
+ recordings.processing_audio
37
+ recordings.ready_for_transcription
38
+
39
+ Anything you might expect to be able to do on an array is possible thanks to the magic of Ruby's `method_missing`:
40
+
41
+ recordings.each do |recording|
42
+ puts recording[:name]
43
+ end
44
+
45
+ Instances of the recording class have appropriate type-casting, partially due to the magic Savon gives us (type casting a date string to a DateTime object), and this class cleans up the odd String into a float or integer as appropriate.
46
+
47
+ Please note, that durations are floats in seconds.
48
+
49
+ #### Uploading recordings
50
+
51
+ ###### Prerequisites
52
+
53
+ NOTE: This piece of functionality (and actually only this) relies on FFMPEG and the `streamio-ffmpeg` Ruby gem, unless you explicitly state the duration of the audio in an options hash.
54
+
55
+ On Ubuntu:
56
+
57
+ sudo apt-get install ffmpeg
58
+
59
+ (or your Linux package manager to install the ffmpeg package)
60
+
61
+ On Mac:
62
+
63
+ Get [Homebrew](http://brew.sh/) and then
64
+
65
+ brew install ffmpeg
66
+
67
+
68
+ Not yet tested on Windows environments. Feel free to send feedback / advice on an FFMPEG alternative.
69
+
70
+
71
+ RubyMotion - this gem uses synchronous connections, and other stuff making it inappropriate. A RubyMotion-specific gem is in the works.
72
+
73
+ ###### Actually uploading files
74
+
75
+ client.upload 'my_cool_file.mp3'
76
+
77
+ That's pretty easy, right?
78
+
79
+ Or you can also include a second argument, to overwrite the defaults.
80
+
81
+ # options - a Hash with these keys:
82
+ # :multiple_speakers - Boolean (default is true)
83
+ # :duration - Float
84
+ # :description - String
85
+
86
+
87
+ An example of using these options looks like this:
88
+
89
+ client.upload 'my_cool_file.mp3', { duration: 12345.12, multiple_speakers: false, description: "Yo!" }
90
+
91
+ This can take some time, as it first uses [Excon](http://excon.io/) to upload to Windows Azure Blob Storage, using the URL asked provided by the API. Once the upload to Windows Azure completes, it sends a SOAP request to the API to confirm the file name and details. The recording is then in the initial state - Status 10, Ready for Transcription.
9
92
 
10
- client.get_recording(recording_id) # => <Recording:0x007fc69e49f0b8>
93
+ The return value is the response hash, which includes the Recording ID. This Recording ID is a GUID, and you may want to hold on to it. It will be available in the list of recordings.
11
94
 
12
- client.submit_recording(recording_id) # => true or false
95
+ #### Submitting recordings for transcription
13
96
 
14
- Or interact through a customer object
97
+ If you have used the [web interface](https://portal.transcribeme.com) to set up payment you can use the transcribe_recording method like so:
15
98
 
16
- customer = Customer.new(username: "customer@transcribeme.com", password: PASSWORD)
17
-
18
- or
19
- customer = {username: "customer@transcribeme.com", password: PASSWORD}
20
-
21
- or
22
- customer = Struct.new(:username, :password)
23
-
99
+ client.transcribe_recording '5e38e162-3e05-4f4d-82c1-010a34891fd8'
24
100
 
25
- client.login_as_customer(customer)
26
- either a hash, or a duck-typed object which either responds to [:username] and [:password] or #username and #password
101
+ or if you have a promo code:
27
102
 
103
+ client.transcribe_recording_using_promocode '5e38e162-3e05-4f4d-82c1-010a34891fd8', 'MyPromoCodeRules'
@@ -2,4 +2,5 @@ require 'savon'
2
2
  require 'streamio-ffmpeg'
3
3
  require 'excon'
4
4
  require 'transcribeme/version'
5
+ require 'transcribeme/api/recording'
5
6
  require 'transcribeme/api/client'
@@ -11,6 +11,8 @@ module TranscribeMe
11
11
  attr_reader :session_expiry_time
12
12
  # Public: Returns the underlining Savon object
13
13
  attr_reader :savon
14
+ # Public: Returns the last list of recordings
15
+ attr_reader :recordings
14
16
 
15
17
  WSDL = 'http://transcribeme-api.cloudapp.net/PortalAPI.svc?wsdl=wsdl0'
16
18
  ENDPOINT = 'http://transcribeme-api.cloudapp.net/PortalAPI.svc'
@@ -67,14 +69,15 @@ module TranscribeMe
67
69
  #
68
70
  # requires the user to be logged in
69
71
  #
70
- # Returns an Array of Hashes of with the properties of recording objects
72
+ # Returns an Array of recording objects
71
73
  def get_recordings
72
74
  # raise 'Login first!' unless @customer_login_id
73
75
 
74
76
  response = @savon.call :get_customer_recordings,
75
77
  message: { 'wsdl:sessionID' => session_id }
76
78
 
77
- @recordings = response.body[:get_customer_recordings_response][:get_customer_recordings_result][:recording_info]
79
+ # Returns an array of instances of the Recording class
80
+ @recordings = Recording.new_from_soap response.body[:get_customer_recordings_response][:get_customer_recordings_result][:recording_info]
78
81
  end
79
82
 
80
83
  # Public: Calls the 'GetUploadUrl' SOAP Action
@@ -168,7 +171,7 @@ module TranscribeMe
168
171
  'wsdl:recordingId' => recording_id,
169
172
  'wsdl:promoCode' => promocode }
170
173
 
171
- response.body[:transcribe_recording_using_promocode_response][:transcribe_recording_using_promocode_result]
174
+ response.body[:transcribe_using_promo_code_response][:transcribe_using_promo_code_result]
172
175
  end
173
176
 
174
177
  # Public: Calls the 'GetRecordingInfo' SOAP Action
@@ -230,6 +233,7 @@ module TranscribeMe
230
233
  @session_expiry_time > Time.now if @session_expiry_time
231
234
  end
232
235
 
236
+
233
237
  end
234
238
 
235
239
  end
@@ -0,0 +1,197 @@
1
+ # TranscribeMe
2
+ module TranscribeMe
3
+ # API module
4
+ module API
5
+ # representation of recording objects
6
+ class Recording
7
+
8
+ # Define attributes
9
+ ATTRIBUTES = [:date_created, :duration, :id, :name, :status, :state]
10
+
11
+ # Recording attributes
12
+ ATTRIBUTES.each do |attr|
13
+ attr_reader attr
14
+ end
15
+
16
+ # Define status codes
17
+ STATUS_CODES = {
18
+ 0 => "New",
19
+ 4 => "File Queued for Upload",
20
+ 6 => "Error during Upload",
21
+ 7 => "Empty File. Nothing to upload",
22
+ 8 => "Upload in Progress",
23
+ 10 => "Ready for Transcription",
24
+ 20 => "Awaiting Payment",
25
+ 30 => "Queued",
26
+ 33 => "TempBeforeHTK",
27
+ 35 => "Processing Audio",
28
+ 40 => "In Progress",
29
+ 50 => "Completed",
30
+ 90 => "Deleted" }
31
+
32
+
33
+ # Public: Initializes the Recording class
34
+ #
35
+ # recording - Hash with attributes from SOAP response
36
+ #
37
+ def initialize(recording)
38
+ recording.each do |key, value|
39
+ if ATTRIBUTES.member? key.to_sym
40
+ self.send (key.to_s + "="), value
41
+ end
42
+ end
43
+ end
44
+
45
+ # Public: Hash-like access to the attributes
46
+ #
47
+ # key - String or Symbol
48
+ #
49
+ # Returns the result of that method call
50
+ def [](key)
51
+ self.send key.to_sym
52
+ end
53
+
54
+ def keys
55
+ ATTRIBUTES
56
+ end
57
+
58
+ private
59
+
60
+ # Private: Iterate through all attributes and define setter
61
+ # methods on them
62
+ ATTRIBUTES.each do |attr|
63
+ case attr
64
+ when :status
65
+ # Private: Sets the state as well as the status according
66
+ # to the status code
67
+ #
68
+ # value - string
69
+ #
70
+ # Returns the status code as an Integer
71
+ define_method :status= do |value|
72
+ @state = STATUS_CODES[value.to_i]
73
+ @status = value.to_i
74
+ end
75
+ when :duration
76
+ # Private: Sets the duration as a float
77
+ #
78
+ # value - string
79
+ #
80
+ # Returns the duration as an Float
81
+ define_method :duration= do |value|
82
+ @duration = value.to_f
83
+ end
84
+ else
85
+ # Private: Setter methods for the date_created, id and
86
+ # name attributes
87
+ #
88
+ # value - object
89
+ #
90
+ # Returns the Object after assigning to an instance variable
91
+ define_method :"#{attr}=" do |value|
92
+ instance_variable_set :"@#{attr}", value
93
+ end
94
+ end
95
+ end
96
+
97
+ # Class Methods
98
+ class << self
99
+
100
+ # Public: recording instances as a class instance
101
+ # variable
102
+ #
103
+ # Returns the Array of recording instances
104
+ def all
105
+ # Assign to an empty array if nil
106
+ @@list ||= []
107
+ end
108
+
109
+ # Alias the .list method to .all
110
+ alias_method :list, :all
111
+ # Alias the .to_a method to .all
112
+ alias_method :to_a, :all
113
+
114
+
115
+ # Public: Returns an array of recording instances
116
+ #
117
+ # recordings - an Array of Hashes returned from a SOAP call
118
+ #
119
+ # Returns an Array of Recording instances
120
+ def new_from_soap(recordings)
121
+ # Reset the list array to be blank
122
+ @@list = []
123
+ recordings.map do |recording|
124
+ @@list << self.new(recording)
125
+ end
126
+ self
127
+ end
128
+
129
+ # Public: Display information about the number of recordings available
130
+ #
131
+ # Returns a String
132
+ def inspect
133
+ "TranscribeMe::API::Recordings count=#{list.count} list=[...] "
134
+ end
135
+
136
+ # Alias .to_s to .inspect for convenience
137
+ alias_method :to_s, :inspect
138
+
139
+
140
+ # Public: Gets the list of completed recordings
141
+ #
142
+ # Returns an Array with only the recordings of status 50
143
+ def completed
144
+ list.select {|l| l[:status] == 50 }
145
+ end
146
+
147
+ # Public: Gets the list of in progress recordings
148
+ #
149
+ # Returns an Array with only the recordings of status 40
150
+ def in_progress
151
+ list.select {|l| l[:state] == 40 }
152
+ end
153
+
154
+ # Public: Gets the list of recordings currently processing audio
155
+ #
156
+ # Returns an Array with only the recordings of status 35
157
+ def processing_audio
158
+ list.select {|l| l[:state] == 35 }
159
+ end
160
+
161
+ # Public: Gets the list of recordings currently ready for transcription
162
+ #
163
+ # Returns an Array with only the recordings of status 10
164
+ def ready_for_transcription
165
+ list.select {|l| l[:state] == 10 }
166
+ end
167
+
168
+ # Alias :ready_for_transcription to :ready for convenience
169
+ alias_method :ready, :ready_for_transcription
170
+
171
+ # Public: Delegate methods we don't understand to the array
172
+ #
173
+ # method - a String or Symbol
174
+ # *args - optional variable arguments
175
+ # &block - optional block
176
+ #
177
+ # Example:
178
+ #
179
+ # Recording.each do |recording|
180
+ # puts recording[:name]
181
+ # end
182
+ #
183
+ # Returns the result of the delegated method call or
184
+ # raises a runtime error if the method isn't findable
185
+ def method_missing(method, *args, &block)
186
+ if list.respond_to? method.to_sym
187
+ list.send(method.to_sym, *args, &block)
188
+ else
189
+ super
190
+ end
191
+ end
192
+
193
+ end
194
+
195
+ end
196
+ end
197
+ end
@@ -1,4 +1,4 @@
1
1
  # TranscribeMe namespace
2
2
  module TranscribeMe
3
- VERSION = '1.0.0.beta'
3
+ VERSION = '1.0.0'
4
4
  end
@@ -101,7 +101,7 @@ describe TranscribeMe::API::Client do
101
101
  end
102
102
 
103
103
  it 'returns an array of recordings' do
104
- expect(@recordings.class.to_s).to eq "Array"
104
+ expect(@recordings.list.class.to_s).to eq "Array"
105
105
  end
106
106
 
107
107
  describe 'recordings' do
@@ -111,7 +111,7 @@ describe TranscribeMe::API::Client do
111
111
  end
112
112
 
113
113
  it 'has properties' do
114
- expect(@recording.keys).to eq [:date_created, :duration, :id, :name, :status]
114
+ expect(@recording.keys).to eq [:date_created, :duration, :id, :name, :status, :state]
115
115
  end
116
116
 
117
117
  end
@@ -0,0 +1,3 @@
1
+ errors:
2
+ expired_session: <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><SignInResponse xmlns="http://TranscribeMe.API.Web"><SignInResult>00000000-0000-0000-0000-000000000000</SignInResult><errorCode>100</errorCode><errorMessage>Requested session has been removed or expired.</errorMessage></SignInResponse></s:Body></s:Envelope>
3
+ invalid_credentials: <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><SignInResponse xmlns="http://TranscribeMe.API.Web"><SignInResult>00000000-0000-0000-0000-000000000000</SignInResult><errorCode>204</errorCode><errorMessage>Provided credentials are invalid. Please check your login and password and try again.</errorMessage></SignInResponse></s:Body></s:Envelope>
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ['lib']
20
20
 
21
- spec.add_runtime_dependency 'savon', '~> 2.2'
21
+ spec.add_runtime_dependency 'savon', '~> 2.3.0'
22
22
  spec.add_runtime_dependency 'excon', '~> 0.25.3'
23
23
  spec.add_runtime_dependency 'streamio-ffmpeg', '~> 1.0.0'
24
24
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: transcribeme
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.beta
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tuttinator
@@ -31,7 +31,7 @@ cert_chain:
31
31
  /qqRTsuOOmPoaNtB4XnGMXyHOzOhAvurliPCtBFlkWAH0RvDt29O9ZcwRhInvr83
32
32
  S4meqecZ62/XH48iGccggmMPiTi8zQ==
33
33
  -----END CERTIFICATE-----
34
- date: 2013-09-03 00:00:00.000000000 Z
34
+ date: 2013-09-10 00:00:00.000000000 Z
35
35
  dependencies:
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: savon
@@ -39,14 +39,14 @@ dependencies:
39
39
  requirements:
40
40
  - - ~>
41
41
  - !ruby/object:Gem::Version
42
- version: '2.2'
42
+ version: 2.3.0
43
43
  type: :runtime
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
46
46
  requirements:
47
47
  - - ~>
48
48
  - !ruby/object:Gem::Version
49
- version: '2.2'
49
+ version: 2.3.0
50
50
  - !ruby/object:Gem::Dependency
51
51
  name: excon
52
52
  requirement: !ruby/object:Gem::Requirement
@@ -180,13 +180,8 @@ files:
180
180
  - USAGE.md
181
181
  - lib/transcribeme.rb
182
182
  - lib/transcribeme/api/client.rb
183
+ - lib/transcribeme/api/recording.rb
183
184
  - lib/transcribeme/version.rb
184
- - pkg/transcribeme-0.0.1.gem
185
- - pkg/transcribeme-0.0.2.beta.gem
186
- - pkg/transcribeme-0.0.2.pre.gem
187
- - pkg/transcribeme-0.0.3.alpha1.gem
188
- - pkg/transcribeme-0.0.4.beta1.gem
189
- - pkg/transcribeme-0.0.5.beta.gem
190
185
  - spec/lib/api/client_spec.rb
191
186
  - spec/spec_helper.rb
192
187
  - spec/support/audio/yes-we-can-speech.mp3
@@ -196,6 +191,7 @@ files:
196
191
  - spec/support/cassettes/successful_sign_in_after_initialize_call.yml
197
192
  - spec/support/cassettes/unsuccessful_sign_in.yml
198
193
  - spec/support/cassettes/upload_url.yml
194
+ - spec/support/sample_errors.yaml
199
195
  - transcribeme.gemspec
200
196
  homepage: http://tuttinator.github.io/transcribeme/
201
197
  licenses:
@@ -212,9 +208,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
212
208
  version: '0'
213
209
  required_rubygems_version: !ruby/object:Gem::Requirement
214
210
  requirements:
215
- - - '>'
211
+ - - '>='
216
212
  - !ruby/object:Gem::Version
217
- version: 1.3.1
213
+ version: '0'
218
214
  requirements: []
219
215
  rubyforge_project:
220
216
  rubygems_version: 2.0.3
@@ -231,4 +227,5 @@ test_files:
231
227
  - spec/support/cassettes/successful_sign_in_after_initialize_call.yml
232
228
  - spec/support/cassettes/unsuccessful_sign_in.yml
233
229
  - spec/support/cassettes/upload_url.yml
230
+ - spec/support/sample_errors.yaml
234
231
  has_rdoc:
metadata.gz.sig CHANGED
Binary file