twilio_recordings 0.0.7 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/twilio_recordings.rb +48 -13
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8033bae6057d03b97e9b48a9c1ef77c5a1f6405c
|
4
|
+
data.tar.gz: cdad125449613cf7daa2d6f17841dbea0e1d3a13
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b2d7c6c5a3563262504ca0959bf697c5a6b3c7d084556670a727307849a5e4c0c24485ff025ea5350ef8e06f7b2ffbbb9424084432a8c4a106154567c977985f
|
7
|
+
data.tar.gz: 999c7b8fbf38e64e599a66721349ad4728727a4ab39dbe4eb248bbad427f8949281879bd70b9bf631a3f9148e0d25a25ee660b873500dcc008c8d1bbb655df00
|
data/lib/twilio_recordings.rb
CHANGED
@@ -19,7 +19,8 @@ class TwilioRecordings
|
|
19
19
|
@account_sid = account_sid
|
20
20
|
@recording_sids = recording_sids.map{ |sid| self.class.sanitize(sid) }
|
21
21
|
@tmp_dir = options[:tmp_dir] || File.join('','tmp')
|
22
|
-
|
22
|
+
|
23
|
+
@tmp_files = {}
|
23
24
|
end
|
24
25
|
|
25
26
|
##
|
@@ -39,7 +40,8 @@ class TwilioRecordings
|
|
39
40
|
# >> t.twilio_urls
|
40
41
|
# => ["./my_tmp_dir/RE12345678901234567890123456789012.mp3"]
|
41
42
|
def filenames
|
42
|
-
|
43
|
+
init_tmp_files
|
44
|
+
@recording_sids.map { |sid| @tmp_files[sid].path }
|
43
45
|
end
|
44
46
|
|
45
47
|
##
|
@@ -56,11 +58,6 @@ class TwilioRecordings
|
|
56
58
|
end
|
57
59
|
end
|
58
60
|
|
59
|
-
def download_and_join
|
60
|
-
download
|
61
|
-
join
|
62
|
-
end
|
63
|
-
|
64
61
|
##
|
65
62
|
# Download the recordings to @tmp_dir
|
66
63
|
#
|
@@ -70,16 +67,20 @@ class TwilioRecordings
|
|
70
67
|
# >> t.download
|
71
68
|
# => #<TwilioRecordings:0x00... >
|
72
69
|
def download
|
70
|
+
recording_downloads = {}
|
73
71
|
# download the recordings
|
74
72
|
connection.in_parallel do
|
75
|
-
twilio_urls.zip(
|
76
|
-
|
73
|
+
twilio_urls.zip(@recording_sids).each do |url, sid|
|
74
|
+
recording_downloads[sid] = connection.get(url)
|
77
75
|
end
|
78
76
|
end
|
79
77
|
|
78
|
+
init_tmp_files
|
79
|
+
|
80
80
|
# write the recordings to file
|
81
|
-
|
82
|
-
|
81
|
+
recording_downloads.each do |sid, response|
|
82
|
+
@tmp_files[sid].write(response.body)
|
83
|
+
@tmp_files[sid].close
|
83
84
|
end
|
84
85
|
|
85
86
|
self
|
@@ -95,11 +96,27 @@ class TwilioRecordings
|
|
95
96
|
# Arguments:
|
96
97
|
# output: A string to the filename that the output should be written to. (optional, default is '/tmp/joined_{recording_ids}')
|
97
98
|
def join(output=nil)
|
98
|
-
output
|
99
|
+
unless output
|
100
|
+
output_file = Tempfile.new(['joined_recording','.mp3'], @tmp_dir)
|
101
|
+
output_file.binmode
|
102
|
+
output_file.close
|
103
|
+
output = output_file.path
|
104
|
+
end
|
99
105
|
`cat #{filenames.join(" ")} > #{output}`
|
106
|
+
cleanup
|
100
107
|
output
|
101
108
|
end
|
102
109
|
|
110
|
+
##
|
111
|
+
# Clean up the temporarily downloaded recordings.
|
112
|
+
#
|
113
|
+
# Example:
|
114
|
+
# >> t.cleanup
|
115
|
+
# => true
|
116
|
+
def cleanup
|
117
|
+
remove_tmp_files
|
118
|
+
end
|
119
|
+
|
103
120
|
##
|
104
121
|
# Sanitize the filename.
|
105
122
|
#
|
@@ -110,4 +127,22 @@ class TwilioRecordings
|
|
110
127
|
def self.sanitize(filename)
|
111
128
|
filename.gsub(/[^a-zA-Z0-9]/, '')
|
112
129
|
end
|
113
|
-
|
130
|
+
|
131
|
+
private
|
132
|
+
|
133
|
+
def init_tmp_files
|
134
|
+
return unless @tmp_files == {}
|
135
|
+
@recording_sids.each do |sid|
|
136
|
+
@tmp_files[sid] = Tempfile.new([sid,'.mp3'], @tmp_dir)
|
137
|
+
@tmp_files[sid].binmode
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
def remove_tmp_files
|
142
|
+
return if @tmp_files == {}
|
143
|
+
@tmp_files.values.each do |file|
|
144
|
+
file.unlink
|
145
|
+
end
|
146
|
+
@tmp_files = {}
|
147
|
+
end
|
148
|
+
end
|