multi_video_streaming 1.0.0.beta → 1.0.0.beta1
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
- data/lib/multi_video_streaming/drivers/bunny.rb +7 -2
- data/lib/multi_video_streaming/drivers/s3.rb +8 -2
- data/lib/multi_video_streaming/drivers/vimeo.rb +7 -1
- data/lib/multi_video_streaming/helpers/get_default_error_message.rb +4 -0
- data/lib/multi_video_streaming/helpers/sort_files_array_by_label.rb +11 -0
- data/lib/multi_video_streaming/helpers.rb +1 -0
- data/lib/multi_video_streaming/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 92365a32422c9c1f7706b66f408f0afd9e8d35c71c4c1adfc7b97eeda74f5f0b
|
4
|
+
data.tar.gz: d7bda7860ead53a260ab9053f375ac1481ab7d65d7715f18d6fac8883205ece7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b920bd4787764978ddf96c2841dc67988bd5db4e67ddfe628d08557cba1a66678482b424a41544662234dcac1c6cb3f3fcf60b0a77a2d23693ecc3b551f0a354
|
7
|
+
data.tar.gz: 98a84c8c5130240d39159b4d313f515ac91a8c2a973658004a0bc4a84a3559e6612d97f2d588cdedd22ddec5cb8f92cfe78d8587f2b9b1d213cb000d6429b07f
|
@@ -99,10 +99,10 @@ module MultiVideoStreaming
|
|
99
99
|
end
|
100
100
|
|
101
101
|
response["directPlay"] = "https://video.bunnycdn.com/play/#{library_id}/#{video_id}"
|
102
|
-
response["availableResolutions"] = response["availableResolutions"]
|
102
|
+
response["availableResolutions"] = response["availableResolutions"]&.split(",")
|
103
103
|
|
104
104
|
files = []
|
105
|
-
response["availableResolutions"]
|
105
|
+
response["availableResolutions"]&.map do |available_resolution|
|
106
106
|
files <<
|
107
107
|
{
|
108
108
|
file: "https://#{pull_zone}.b-cdn.net/#{response["guid"]}/play_#{available_resolution}.mp4",
|
@@ -110,11 +110,16 @@ module MultiVideoStreaming
|
|
110
110
|
}
|
111
111
|
end
|
112
112
|
|
113
|
+
MultiVideoStreaming::Helpers::SortFilesArrayByLabel.sort(array: files)
|
113
114
|
response["files"] = files
|
114
115
|
status = STATUS_EQUIVALENT[response["status"].to_s]
|
115
116
|
|
116
117
|
response["status"] = STATUS_EQUIVALENT[response["status"].to_s]
|
117
118
|
|
119
|
+
if response["status"] != "available"
|
120
|
+
raise MultiVideoStreaming::Helpers::GetDefaultErrorMessage.not_available
|
121
|
+
end
|
122
|
+
|
118
123
|
return self.response_instance.add_response(
|
119
124
|
platform_name: "bunny",
|
120
125
|
status: "success",
|
@@ -29,17 +29,18 @@ module MultiVideoStreaming
|
|
29
29
|
response = Aws::S3::Resource.new().bucket(bucket).object(video_id)
|
30
30
|
video_url = response.public_url
|
31
31
|
|
32
|
+
url_signed = generate_presign_url(bucket: bucket, key: video_id)
|
32
33
|
data = {
|
33
34
|
"key": response.key,
|
34
35
|
"title": response.key,
|
35
36
|
"status": STATUS_EQUIVALENT[:true],
|
36
37
|
"files": [
|
37
38
|
{
|
38
|
-
file:
|
39
|
+
file: url_signed
|
39
40
|
}
|
40
41
|
],
|
41
42
|
"available_resolutions": [],
|
42
|
-
"direct_play":
|
43
|
+
"direct_play": url_signed,
|
43
44
|
"date_uploaded": response.data.last_modified
|
44
45
|
}
|
45
46
|
|
@@ -139,6 +140,11 @@ module MultiVideoStreaming
|
|
139
140
|
Aws.config.update(credentials: credentials, region: region, force_path_style: true)
|
140
141
|
end
|
141
142
|
end
|
143
|
+
|
144
|
+
def generate_presign_url(bucket:, key:)
|
145
|
+
signer = Aws::S3::Presigner.new
|
146
|
+
signer.presigned_url(:get_object, bucket: bucket, key: key, expires_in: 900)
|
147
|
+
end
|
142
148
|
end
|
143
149
|
end
|
144
150
|
end
|
@@ -105,16 +105,22 @@ module MultiVideoStreaming
|
|
105
105
|
|
106
106
|
available_resolutions = []
|
107
107
|
files = []
|
108
|
-
response["files"]
|
108
|
+
response["files"]&.each do |file|
|
109
109
|
if file["rendition"] != "adaptive"
|
110
110
|
available_resolutions << file["rendition"]
|
111
111
|
files << { file: file["link"], label: file["rendition"] }
|
112
112
|
end
|
113
113
|
end
|
114
114
|
|
115
|
+
MultiVideoStreaming::Helpers::SortFilesArrayByLabel.sort(array: files)
|
115
116
|
response["files"] = files
|
116
117
|
response["available_resolutions"] = available_resolutions
|
117
118
|
response["status"] = STATUS_EQUIVALENT[response["status"]]
|
119
|
+
|
120
|
+
if response["status"] != "available"
|
121
|
+
raise MultiVideoStreaming::Helpers::GetDefaultErrorMessage.not_available
|
122
|
+
end
|
123
|
+
|
118
124
|
return self.response_instance.add_response(
|
119
125
|
platform_name: "vimeo",
|
120
126
|
status: "success",
|
@@ -0,0 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module MultiVideoStreaming
|
4
|
+
module Helpers
|
5
|
+
class SortFilesArrayByLabel
|
6
|
+
def self.sort(array:)
|
7
|
+
array.sort! { |lastFile, nextFile| /[\d]+/.match(nextFile[:label])[0].to_i <=> /[\d]+/.match(lastFile[:label])[0].to_i }
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: multi_video_streaming
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0.
|
4
|
+
version: 1.0.0.beta1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Henrique Schmeller
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2022-
|
13
|
+
date: 2022-09-30 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rspec
|
@@ -89,6 +89,7 @@ files:
|
|
89
89
|
- lib/multi_video_streaming/factories/drive.rb
|
90
90
|
- lib/multi_video_streaming/helpers.rb
|
91
91
|
- lib/multi_video_streaming/helpers/get_default_error_message.rb
|
92
|
+
- lib/multi_video_streaming/helpers/sort_files_array_by_label.rb
|
92
93
|
- lib/multi_video_streaming/helpers/title_from_url.rb
|
93
94
|
- lib/multi_video_streaming/platforms_support.rb
|
94
95
|
- lib/multi_video_streaming/protocols.rb
|