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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/.gitignore +2 -1
- data/README.md +3 -101
- data/USAGE.md +93 -17
- data/lib/transcribeme.rb +1 -0
- data/lib/transcribeme/api/client.rb +7 -3
- data/lib/transcribeme/api/recording.rb +197 -0
- data/lib/transcribeme/version.rb +1 -1
- data/spec/lib/api/client_spec.rb +2 -2
- data/spec/support/sample_errors.yaml +3 -0
- data/transcribeme.gemspec +1 -1
- metadata +9 -12
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 43e368c48c116a708dbccda72fcd53bbd7806b6d
|
4
|
+
data.tar.gz: 6e0539e5685c05334515b4eafae526d848aee3d8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8a894f41121bf13ebf66662820d98348f038fdc1c49da7eaa81abac75360dd8a77c2fb74191cf703ef51577382724e66dafc5041d8c50034f32328aca110eee7
|
7
|
+
data.tar.gz: 61df26e41e3f1307b1cfb8a5d117416b525c7c33ee14c35ba7f27599fe37b481dfa0aa328e514544a84d8771415d5803797f686f706950922e03f47176585a78
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/.gitignore
CHANGED
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
|
-
|
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
|
-
|
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
|
-
|
1
|
+
# Usage
|
2
2
|
|
3
|
-
|
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
|
-
|
8
|
-
|
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
|
-
|
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
|
-
|
95
|
+
#### Submitting recordings for transcription
|
13
96
|
|
14
|
-
|
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
|
-
|
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
|
-
|
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'
|
data/lib/transcribeme.rb
CHANGED
@@ -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
|
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
|
-
|
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[:
|
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
|
data/lib/transcribeme/version.rb
CHANGED
data/spec/lib/api/client_spec.rb
CHANGED
@@ -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>
|
data/transcribeme.gemspec
CHANGED
@@ -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.
|
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
|
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-
|
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:
|
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:
|
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:
|
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
|