awslive-poster 0.1.2 → 0.1.7

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 753564e7fb69e7762afb65b2769c30a63e146286844916c9e93f2a29cde5c32e
4
- data.tar.gz: 47422fa3163d44c695efd6ace54816fb4686c68f2bb8dd45c6e8ce496d89b4d8
3
+ metadata.gz: c19944959ef73fb75ec58858c59febda14b281d1d65da922b836d181a633d363
4
+ data.tar.gz: b285bd04100e1b185aedbd55121a9b23dd3ef44c4b0cbdbfe345c2529238822b
5
5
  SHA512:
6
- metadata.gz: 94175fc4a89bf329e446b9b279870ec37d0c4a2feb737fb4243ce8841410f57c08727257e69f48173786fb7bfddaaf40ca7b48a4ba4a6944ba6de5120143c4a6
7
- data.tar.gz: 84af17c7191aac1373b29afdbaee1d49951ebc97546c962e9d67f55a9caf7feb69f2c92a398bb1007569ad66f687fedd35edc0f5ee8485ad107abcd7faf25a3a
6
+ metadata.gz: 5e430229ee5e589462cc7d8de2809215d26d1afddbe08e4940d5c4af9a08508b32fca0fb90788fbb17f040bc832b0bb7540cf4ddbbb4d5e612208dd789f6a200
7
+ data.tar.gz: d9d6bb2f679a975fbdaf4630ba348f8015e20f4dc88f18459fc191b124d5336c2b2da311d4f92421ed58ae102e70faf50fe0d6d6c4249723ce13779bbf404c44
@@ -10,9 +10,15 @@ module Awslive
10
10
  class PosterImageDoesNotExist < StandardError; end
11
11
  class NoStartTimeInTag < StandardError; end
12
12
 
13
- def initialize(channel_id)
13
+ MAX_CHANNEL_START_TIME = 2 * 60
14
+
15
+ def initialize(channel_id, access_key=nil , access_secret =nil, region = nil)
14
16
  credentials = Aws::SharedCredentials.new
15
- if credentials.set?
17
+ if !access_key.nil? && !access_secret.nil?
18
+ aws_region = region.nil? ? 'us-east-1' : region
19
+ @medialiveclient = Aws::MediaLive::Client.new( :access_key_id => access_key, :secret_access_key => access_secret, :region => aws_region )
20
+ @s3 = Aws::S3::Resource.new( :access_key_id => access_key, :secret_access_key => access_secret, :region => aws_region )
21
+ elsif credentials.set?
16
22
  @medialiveclient = Aws::MediaLive::Client.new(:credentials => credentials)
17
23
  @s3 = Aws::S3::Resource.new(:credentials => credentials)
18
24
  else
@@ -20,6 +26,10 @@ module Awslive
20
26
  @s3 = Aws::S3::Resource.new
21
27
  end
22
28
  @channel_id = channel_id
29
+ @last_computed_time = nil
30
+
31
+ @last_preview_url = nil
32
+ @interval = nil
23
33
  end
24
34
 
25
35
  def get_url(channel_info = nil)
@@ -27,6 +37,7 @@ module Awslive
27
37
  channel_info = @medialiveclient.describe_channel({ :channel_id => "#{@channel_id}" }) if channel_info.nil?
28
38
  channel_state = channel_info[:state]
29
39
  if channel_state == "RUNNING"
40
+ @last_computed_time = Time.now.to_i
30
41
  out_group = get_framecapture_group(channel_info["encoder_settings"])
31
42
  raise NoFrameCaptureOutputGroup.new("Framecapture output group should be configured!") if out_group.nil?
32
43
  start_time = get_channel_start_time(channel_info)
@@ -35,27 +46,38 @@ module Awslive
35
46
  url = get_dest_url(dest_id, channel_info)
36
47
  uri = URI(url)
37
48
  modifier = get_framecapture_modifier(out_group)
38
- interval = get_framecapture_interval(out_group, channel_info)
39
- seq_counter = compute_index(start_time, interval)
49
+ @interval = get_framecapture_interval(out_group, channel_info)
50
+ seq_counter = compute_index(start_time, @interval)
40
51
  suffix = uri.path[1..-1]
41
52
  bucket = @s3.bucket("#{uri.host}")
42
53
  obj = bucket.object("#{suffix}#{modifier}.#{seq_counter}.jpg")
43
- if obj.exists?
44
- preview_url = obj.presigned_url(:get)
45
- else
46
- raise PosterImageDoesNotExist.new("Poster Image #{suffix}#{modifier}.#{seq_counter}.jpg Does not exist!")
54
+ preview_url = get_presigned_url(obj)
55
+ if preview_url.nil?
56
+ puts "seems delay in generating posters; giving a pause for fetching!!"
57
+ sleep (@interval / 2 ).round
58
+ preview_url = get_presigned_url(obj)
47
59
  end
60
+ raise PosterImageDoesNotExist.new("Poster Image #{suffix}#{modifier}.#{seq_counter}.jpg Does not exist!") if preview_url.nil?
48
61
  else
49
62
  raise InvalidChannelState.new("Channel Need to be in running state!, current state is #{channel_state}")
50
63
  end
51
64
  preview_url
52
65
  end
53
66
 
67
+ def get_presigned_url(obj)
68
+ url = nil
69
+ puts "Fetching the object at #{Time.now}"
70
+ if obj.exists?
71
+ url = obj.presigned_url(:get)
72
+ end
73
+ url
74
+ end
75
+
54
76
  def compute_index(start_time, interval)
55
77
  channel_start_time = Time.iso8601(start_time).to_i
56
78
  current_time = Time.now.utc.to_i
57
79
  diff_time = current_time - channel_start_time
58
- image_index = (diff_time / interval.to_i).to_i
80
+ image_index = (diff_time / interval.to_i).round
59
81
  index = image_index.to_s.rjust(5,'0')
60
82
  index
61
83
  end
@@ -132,4 +154,3 @@ module Awslive
132
154
  end
133
155
  end
134
156
  end
135
-
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: awslive-poster
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maheshwaran G
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-01-20 00:00:00.000000000 Z
11
+ date: 2020-02-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -97,8 +97,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
97
97
  - !ruby/object:Gem::Version
98
98
  version: '0'
99
99
  requirements: []
100
- rubyforge_project:
101
- rubygems_version: 2.7.3
100
+ rubygems_version: 3.1.2
102
101
  signing_key:
103
102
  specification_version: 4
104
103
  summary: Utility that generates the Poster Image URL for the running AWS medialive