transcribeme 1.0.0.beta → 1.0.0

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: 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