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