remotion_lambda 4.0.514 → 4.0.515

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: d30f8bc694c6a16af40dbf07a092f6da3cbb77addb18ae170218d5bb2de92313
4
- data.tar.gz: b0cf0cdb92b0fd757db004ad04b22059f38236f56af31d09e41813548922c17b
3
+ metadata.gz: f6a5a86dcbdddef690c8693744bb36805fe170c46658f24d74d91cdcdd50c888
4
+ data.tar.gz: 1d747a9c80d9833175f919e99dd3c608471fa8aa16d9ed71ef99e596d4bf9ba8
5
5
  SHA512:
6
- metadata.gz: 66ecb29f67327e799e9c113d062fb531bfd40fdbab05472f86020a16e7198483caf474d0e421b9ede6967a7059a14a451bad04eb83f36a61e854b493feae7f7d
7
- data.tar.gz: fb8284f60392dee8cb26e3a2c1e93ab24a5fffe504ec743fb148fcfda7fe4683d7e72bd0a8bd38ecc9395cf28b07882e6c563f3756f5d7114d73c3386eb900b1
6
+ metadata.gz: e7b518d39f04b05cb46dfd6ae5eba3e5c5245ec6c9597227ee4f03f9ed6bef568f8613ee97ce1242a3ffe502e1d47c35f04f67ebf2814892962c4d49ec02ae9d
7
+ data.tar.gz: 953a26eb07db694f9b8383bc8c1c04b0471bba058b979d22b52e3bfb67377ed6a98d6f3024155ad13a5c2db2d7e7ef5fb54422f6cfab5f66f1fb3f5e411204eb
@@ -0,0 +1,26 @@
1
+ require_relative 'sdk'
2
+ require 'aws-sdk-s3'
3
+ require 'json'
4
+
5
+ s3_client = Aws::S3::Client.new(stub_responses: true)
6
+ s3_client.stub_responses(:get_object, body: JSON.generate(cancellationEnabled: true))
7
+ client = RemotionLambda::Client.new(s3_client: s3_client)
8
+
9
+ client.cancel_render_on_lambda('remotionlambda-test', 'render-id')
10
+
11
+ requests = s3_client.api_requests
12
+ raise 'Expected progress to be read' unless requests[0][:params][:key] == 'renders/render-id/progress.json'
13
+ raise 'Expected cancellation signal to be written' unless requests[1][:params][:key] == 'renders/render-id/cancel.json'
14
+ cancellation_body = JSON.parse(requests[1][:params][:body])
15
+ raise 'Expected cancelledAt timestamp' unless cancellation_body['cancelledAt'] > 0
16
+
17
+ disabled_s3_client = Aws::S3::Client.new(stub_responses: true)
18
+ disabled_s3_client.stub_responses(:get_object, body: '{}')
19
+ disabled_client = RemotionLambda::Client.new(s3_client: disabled_s3_client)
20
+
21
+ begin
22
+ disabled_client.cancel_render_on_lambda('remotionlambda-test', 'render-id')
23
+ raise 'Expected cancellation to fail without opt-in'
24
+ rescue => error
25
+ raise error unless error.message.include?('enableCancellation: true')
26
+ end
@@ -19,6 +19,7 @@ def get_render_media_on_lambda_payload(
19
19
  crf: nil,
20
20
  delete_after: nil,
21
21
  download_behavior: nil,
22
+ enable_cancellation: false,
22
23
  encoding_buffer_size: nil,
23
24
  encoding_max_rate: nil,
24
25
  env_variables: {},
@@ -79,6 +80,7 @@ payload = {
79
80
  crf: crf,
80
81
  deleteAfter: delete_after,
81
82
  downloadBehavior: download_behavior,
83
+ enableCancellation: enable_cancellation,
82
84
  encodingBufferSize: encoding_buffer_size,
83
85
  encodingMaxRate: encoding_max_rate,
84
86
  envVariables: env_variables,
@@ -30,6 +30,10 @@ payload = get_render_media_on_lambda_payload(
30
30
  )
31
31
 
32
32
  raise "Expected the current SDK to default overwrite to false" unless payload[:overwrite] == false
33
+ raise "Expected cancellation to default to false" unless payload[:enableCancellation] == false
34
+
35
+ cancellable_payload = get_render_media_on_lambda_payload(codec: "h264", enable_cancellation: true)
36
+ raise "Expected cancellation to be enabled" unless cancellable_payload[:enableCancellation] == true
33
37
 
34
38
  # Print as JSON
35
39
  puts JSON.generate(payload)
@@ -1,4 +1,5 @@
1
1
  require 'aws-sdk-lambda'
2
+ require 'aws-sdk-s3'
2
3
  require 'json'
3
4
  require 'logger'
4
5
  require_relative 'version'
@@ -9,11 +10,13 @@ module RemotionLambda
9
10
 
10
11
  def initialize(
11
12
  region: ENV.fetch('AWS_REGION', 'us-east-1'),
12
- aws_profile: nil
13
+ aws_profile: nil,
14
+ s3_client: nil
13
15
  )
14
16
  @region = region
15
17
  @aws_profile = aws_profile
16
18
  @lambda_client = create_lambda_client
19
+ @s3_client = s3_client
17
20
  end
18
21
 
19
22
  def get_render_progress(function_name, payload)
@@ -34,6 +37,26 @@ module RemotionLambda
34
37
  body
35
38
  end
36
39
 
40
+ def cancel_render_on_lambda(bucket_name, render_id)
41
+ progress_response = s3_client.get_object(
42
+ bucket: bucket_name,
43
+ key: "renders/#{render_id}/progress.json"
44
+ )
45
+ progress = JSON.parse(progress_response.body.read)
46
+
47
+ unless progress['cancellationEnabled'] == true
48
+ raise "Cannot cancel render #{render_id}: The render was not started with enableCancellation: true."
49
+ end
50
+
51
+ s3_client.put_object(
52
+ bucket: bucket_name,
53
+ key: "renders/#{render_id}/cancel.json",
54
+ body: JSON.generate(cancelledAt: (Time.now.to_f * 1000).floor),
55
+ content_type: 'application/json'
56
+ )
57
+ nil
58
+ end
59
+
37
60
  private
38
61
 
39
62
  # Lambda methods
@@ -50,6 +73,10 @@ module RemotionLambda
50
73
  Aws::Lambda::Client.new(region: @region, credentials: aws_credentials)
51
74
  end
52
75
 
76
+ def s3_client
77
+ @s3_client ||= Aws::S3::Client.new(region: @region, credentials: aws_credentials)
78
+ end
79
+
53
80
  def aws_credentials
54
81
  if @aws_profile
55
82
  Aws::SharedCredentials.new(profile_name: @aws_profile)
@@ -1 +1 @@
1
- VERSION = "4.0.514"
1
+ VERSION = "4.0.515"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: remotion_lambda
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.514
4
+ version: 4.0.515
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonny Burger
@@ -23,6 +23,20 @@ dependencies:
23
23
  - - ">"
24
24
  - !ruby/object:Gem::Version
25
25
  version: 1.0.0
26
+ - !ruby/object:Gem::Dependency
27
+ name: aws-sdk-s3
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">"
31
+ - !ruby/object:Gem::Version
32
+ version: 1.0.0
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">"
38
+ - !ruby/object:Gem::Version
39
+ version: 1.0.0
26
40
  - !ruby/object:Gem::Dependency
27
41
  name: json
28
42
  requirement: !ruby/object:Gem::Requirement
@@ -51,6 +65,20 @@ dependencies:
51
65
  - - ">"
52
66
  - !ruby/object:Gem::Version
53
67
  version: 1.0.0
68
+ - !ruby/object:Gem::Dependency
69
+ name: rexml
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">"
73
+ - !ruby/object:Gem::Version
74
+ version: 3.0.0
75
+ type: :runtime
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">"
80
+ - !ruby/object:Gem::Version
81
+ version: 3.0.0
54
82
  description: A Ruby SDK for Remotion Lambda
55
83
  email: jonny@remotion.dev
56
84
  executables: []
@@ -59,6 +87,7 @@ extra_rdoc_files: []
59
87
  files:
60
88
  - README.md
61
89
  - lib/remotion_lambda.rb
90
+ - lib/remotion_lambda/cancel_render_on_lambda_spec.rb
62
91
  - lib/remotion_lambda/render_media_on_lambda_payload.rb
63
92
  - lib/remotion_lambda/render_media_on_lambda_payload_spec.rb
64
93
  - lib/remotion_lambda/render_progress_payload.rb