multi_video_streaming 1.0.0.beta → 1.0.0.beta2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0c1ae1d10ba98cf2adfd9db15e18956c5ec601e0afdd47f4857c5313d5b5661c
4
- data.tar.gz: e972c5a015cb6e813c9423d21a0993646aacc807b549797f6db638f3686823c4
3
+ metadata.gz: 576ef1a45eec87fcae6d0ff4f9a4242d9c59cc7472f8440126db5610aa77beaf
4
+ data.tar.gz: 9ed14f0f89b288cb6a43c1c9058491f0addbc2243eb9428a31826052439f676d
5
5
  SHA512:
6
- metadata.gz: 1feb06fa08e5ec6775c208ea859371083956b99d95c71b419b040823cfa307156c1acaeb110ae012bf12c6d573636ef800752d3fb3ed3ed74415ecb6db1bac2f
7
- data.tar.gz: a4cf1f7c854d9b3b4838e459c75417441078fccc2ac2b09ff02751855d29579126529a701efc7303da03ea5a96604da6ca8d746e2b5158b7da75a610b1c99982
6
+ metadata.gz: 5ffb28c7493a0503dcba1c6efd42b1660deef94ff22a80a73053d3b1b10c39b7c4b4c2b3d657f2b4ea34cd50fcb62bd4108603a8cb23ba677c429636d40792d9
7
+ data.tar.gz: 4edd27ce4ac7871057254aea303093c512f0aebe22a4dd457f687fadc90529ad93b17d0615c72dbdec052a9945895d10affba89e53dc4671136551f5a9f15c35
@@ -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"].split(",")
102
+ response["availableResolutions"] = response["availableResolutions"]&.split(",")
103
103
 
104
104
  files = []
105
- response["availableResolutions"].map do |available_resolution|
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 = MultiVideoStreaming::Utils::S3.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: video_url
39
+ file: url_signed
39
40
  }
40
41
  ],
41
42
  "available_resolutions": [],
42
- "direct_play": video_url,
43
+ "direct_play": url_signed,
43
44
  "date_uploaded": response.data.last_modified
44
45
  }
45
46
 
@@ -105,16 +105,22 @@ module MultiVideoStreaming
105
105
 
106
106
  available_resolutions = []
107
107
  files = []
108
- response["files"].each do |file|
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",
@@ -21,6 +21,10 @@ module MultiVideoStreaming
21
21
  def self.not_found(video_id:)
22
22
  "The video with id: #{video_id} does not exist."
23
23
  end
24
+
25
+ def self.not_available
26
+ "The video was successfully found, but it is currently not available."
27
+ end
24
28
  end
25
29
  end
26
30
  end
@@ -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
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "multi_video_streaming/helpers/title_from_url.rb"
4
- require "multi_video_streaming/helpers/get_default_error_message.rb"
3
+ require "multi_video_streaming/helpers/title_from_url"
4
+ require "multi_video_streaming/helpers/sort_files_array_by_label"
5
+ require "multi_video_streaming/helpers/get_default_error_message"
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module MultiVideoStreaming
4
+ module Utils
5
+ module S3
6
+ def self.generate_presign_url(bucket:, key:)
7
+ signer = Aws::S3::Presigner.new
8
+ signer.presigned_url(:get_object, bucket: bucket, key: key, expires_in: 900)
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "multi_video_streaming/utils/s3/generate_presign_url"
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MultiVideoStreaming
4
- VERSION = "1.0.0.beta"
4
+ VERSION = "1.0.0.beta2"
5
5
  end
@@ -16,6 +16,7 @@ require "multi_video_streaming/factories"
16
16
  require "multi_video_streaming/errors"
17
17
  require "multi_video_streaming/response"
18
18
  require "multi_video_streaming/helpers"
19
+ require "multi_video_streaming/utils"
19
20
  require "multi_video_streaming/version"
20
21
  require "multi_video_streaming/validators"
21
22
 
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.beta
4
+ version: 1.0.0.beta2
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-08-10 00:00:00.000000000 Z
13
+ date: 2022-10-03 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
@@ -98,6 +99,8 @@ files:
98
99
  - lib/multi_video_streaming/response.rb
99
100
  - lib/multi_video_streaming/services.rb
100
101
  - lib/multi_video_streaming/services/https.rb
102
+ - lib/multi_video_streaming/utils.rb
103
+ - lib/multi_video_streaming/utils/s3/generate_presign_url.rb
101
104
  - lib/multi_video_streaming/validators.rb
102
105
  - lib/multi_video_streaming/validators/platform_name_validator.rb
103
106
  - lib/multi_video_streaming/validators/platforms_array_validator.rb