aws-sdk-kinesisvideowebrtcstorage 1.18.0 → 1.20.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -0
- data/VERSION +1 -1
- data/lib/aws-sdk-kinesisvideowebrtcstorage/client.rb +107 -11
- data/lib/aws-sdk-kinesisvideowebrtcstorage/client_api.rb +18 -0
- data/lib/aws-sdk-kinesisvideowebrtcstorage/endpoint_provider.rb +1 -1
- data/lib/aws-sdk-kinesisvideowebrtcstorage/endpoints.rb +14 -0
- data/lib/aws-sdk-kinesisvideowebrtcstorage/plugins/endpoints.rb +2 -0
- data/lib/aws-sdk-kinesisvideowebrtcstorage/types.rb +17 -0
- data/lib/aws-sdk-kinesisvideowebrtcstorage.rb +1 -1
- data/sig/client.rbs +8 -0
- data/sig/resource.rbs +1 -0
- data/sig/types.rbs +6 -0
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 784ed37cf2d37176fd4ebba74426f2312d001c93ba81261d320172a861ae4f5b
|
4
|
+
data.tar.gz: bfb671fc8fe12e836ccc1ba2d8655fc6fc2eb8cbe4e984ab364beb0bf07cf832
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 21e19ffd79c5d0f89b90e40cd5720b238bf5896b515d12ef113ce869195317627a3c049e55f94b26d07cad11944dfa8b422e1a7c5de91f194e9ede29e560fa7e
|
7
|
+
data.tar.gz: 6ae091f158b4f96f1b26aa92788aae413c8aabaeb8671e49f2cbfa020c9a8b5a2c581a3dad8087fcb20a8e26385d2e64dd5b835657acb797a1c6df1172cf2bd7
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,16 @@
|
|
1
1
|
Unreleased Changes
|
2
2
|
------------------
|
3
3
|
|
4
|
+
1.20.0 (2024-09-03)
|
5
|
+
------------------
|
6
|
+
|
7
|
+
* Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
|
8
|
+
|
9
|
+
1.19.0 (2024-08-05)
|
10
|
+
------------------
|
11
|
+
|
12
|
+
* Feature - Add JoinStorageSessionAsViewer API
|
13
|
+
|
4
14
|
1.18.0 (2024-07-02)
|
5
15
|
------------------
|
6
16
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.20.0
|
@@ -32,6 +32,7 @@ require 'aws-sdk-core/plugins/checksum_algorithm.rb'
|
|
32
32
|
require 'aws-sdk-core/plugins/request_compression.rb'
|
33
33
|
require 'aws-sdk-core/plugins/defaults_mode.rb'
|
34
34
|
require 'aws-sdk-core/plugins/recursion_detection.rb'
|
35
|
+
require 'aws-sdk-core/plugins/telemetry.rb'
|
35
36
|
require 'aws-sdk-core/plugins/sign.rb'
|
36
37
|
require 'aws-sdk-core/plugins/protocols/rest_json.rb'
|
37
38
|
|
@@ -83,6 +84,7 @@ module Aws::KinesisVideoWebRTCStorage
|
|
83
84
|
add_plugin(Aws::Plugins::RequestCompression)
|
84
85
|
add_plugin(Aws::Plugins::DefaultsMode)
|
85
86
|
add_plugin(Aws::Plugins::RecursionDetection)
|
87
|
+
add_plugin(Aws::Plugins::Telemetry)
|
86
88
|
add_plugin(Aws::Plugins::Sign)
|
87
89
|
add_plugin(Aws::Plugins::Protocols::RestJson)
|
88
90
|
add_plugin(Aws::KinesisVideoWebRTCStorage::Plugins::Endpoints)
|
@@ -330,6 +332,16 @@ module Aws::KinesisVideoWebRTCStorage
|
|
330
332
|
# ** Please note ** When response stubbing is enabled, no HTTP
|
331
333
|
# requests are made, and retries are disabled.
|
332
334
|
#
|
335
|
+
# @option options [Aws::Telemetry::TelemetryProviderBase] :telemetry_provider (Aws::Telemetry::NoOpTelemetryProvider)
|
336
|
+
# Allows you to provide a telemetry provider, which is used to
|
337
|
+
# emit telemetry data. By default, uses `NoOpTelemetryProvider` which
|
338
|
+
# will not record or emit any telemetry data. The SDK supports the
|
339
|
+
# following telemetry providers:
|
340
|
+
#
|
341
|
+
# * OpenTelemetry (OTel) - To use the OTel provider, install and require the
|
342
|
+
# `opentelemetry-sdk` gem and then, pass in an instance of a
|
343
|
+
# `Aws::Telemetry::OTelProvider` for telemetry provider.
|
344
|
+
#
|
333
345
|
# @option options [Aws::TokenProvider] :token_provider
|
334
346
|
# A Bearer Token Provider. This can be an instance of any one of the
|
335
347
|
# following classes:
|
@@ -425,6 +437,12 @@ module Aws::KinesisVideoWebRTCStorage
|
|
425
437
|
|
426
438
|
# @!group API Operations
|
427
439
|
|
440
|
+
# <note markdown="1"> Before using this API, you must call the `GetSignalingChannelEndpoint`
|
441
|
+
# API to request the WEBRTC endpoint. You then specify the endpoint and
|
442
|
+
# region in your `JoinStorageSession` API request.
|
443
|
+
#
|
444
|
+
# </note>
|
445
|
+
#
|
428
446
|
# Join the ongoing one way-video and/or multi-way audio WebRTC session
|
429
447
|
# as a video producing device for an input channel. If there’s no
|
430
448
|
# existing session for the channel, a new streaming session needs to be
|
@@ -432,17 +450,33 @@ module Aws::KinesisVideoWebRTCStorage
|
|
432
450
|
# must be provided.
|
433
451
|
#
|
434
452
|
# Currently for the `SINGLE_MASTER` type, a video producing device is
|
435
|
-
# able to ingest both audio and video media into a stream
|
436
|
-
#
|
437
|
-
# join the session first, and wait for other participants.
|
453
|
+
# able to ingest both audio and video media into a stream. Only video
|
454
|
+
# producing devices can join the session and record media.
|
438
455
|
#
|
439
|
-
#
|
440
|
-
#
|
441
|
-
# Video Stream. Multiple viewers are able to playback real-time media.
|
456
|
+
# Both audio and video tracks are currently required for WebRTC
|
457
|
+
# ingestion.
|
442
458
|
#
|
443
|
-
#
|
444
|
-
#
|
445
|
-
#
|
459
|
+
# Current requirements:
|
460
|
+
#
|
461
|
+
# * Video track: H.264
|
462
|
+
#
|
463
|
+
# * Audio track: Opus
|
464
|
+
#
|
465
|
+
# The resulting ingested video in the Kinesis video stream will have the
|
466
|
+
# following parameters: H.264 video and AAC audio.
|
467
|
+
#
|
468
|
+
# Once a master participant has negotiated a connection through WebRTC,
|
469
|
+
# the ingested media session will be stored in the Kinesis video stream.
|
470
|
+
# Multiple viewers are then able to play back real-time media through
|
471
|
+
# our Playback APIs.
|
472
|
+
#
|
473
|
+
# You can also use existing Kinesis Video Streams features like `HLS` or
|
474
|
+
# `DASH` playback, image generation via [GetImages][1], and more with
|
475
|
+
# ingested WebRTC media.
|
476
|
+
#
|
477
|
+
# <note markdown="1"> S3 image delivery and notifications are not currently supported.
|
478
|
+
#
|
479
|
+
# </note>
|
446
480
|
#
|
447
481
|
# <note markdown="1"> Assume that only one video producing device client can be associated
|
448
482
|
# with a session for the channel. If more than one client joins the
|
@@ -451,6 +485,19 @@ module Aws::KinesisVideoWebRTCStorage
|
|
451
485
|
#
|
452
486
|
# </note>
|
453
487
|
#
|
488
|
+
# **Additional information**
|
489
|
+
#
|
490
|
+
# * **Idempotent** - This API is not idempotent.
|
491
|
+
#
|
492
|
+
# * **Retry behavior** - This is counted as a new API call.
|
493
|
+
#
|
494
|
+
# * **Concurrent calls** - Concurrent calls are allowed. An offer is
|
495
|
+
# sent once per each call.
|
496
|
+
#
|
497
|
+
#
|
498
|
+
#
|
499
|
+
# [1]: https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/gs-getImages.html
|
500
|
+
#
|
454
501
|
# @option params [required, String] :channel_arn
|
455
502
|
# The Amazon Resource Name (ARN) of the signaling channel.
|
456
503
|
#
|
@@ -471,20 +518,69 @@ module Aws::KinesisVideoWebRTCStorage
|
|
471
518
|
req.send_request(options)
|
472
519
|
end
|
473
520
|
|
521
|
+
# Join the ongoing one way-video and/or multi-way audio WebRTC session
|
522
|
+
# as a viewer for an input channel. If there’s no existing session for
|
523
|
+
# the channel, create a new streaming session and provide the Amazon
|
524
|
+
# Resource Name (ARN) of the signaling channel (`channelArn`) and client
|
525
|
+
# id (`clientId`).
|
526
|
+
#
|
527
|
+
# Currently for `SINGLE_MASTER` type, a video producing device is able
|
528
|
+
# to ingest both audio and video media into a stream, while viewers can
|
529
|
+
# only ingest audio. Both a video producing device and viewers can join
|
530
|
+
# a session first and wait for other participants. While participants
|
531
|
+
# are having peer to peer conversations through WebRTC, the ingested
|
532
|
+
# media session will be stored into the Kinesis Video Stream. Multiple
|
533
|
+
# viewers are able to playback real-time media.
|
534
|
+
#
|
535
|
+
# Customers can also use existing Kinesis Video Streams features like
|
536
|
+
# `HLS` or `DASH` playback, Image generation, and more with ingested
|
537
|
+
# WebRTC media. If there’s an existing session with the same `clientId`
|
538
|
+
# that's found in the join session request, the new request takes
|
539
|
+
# precedence.
|
540
|
+
#
|
541
|
+
# @option params [required, String] :channel_arn
|
542
|
+
# The Amazon Resource Name (ARN) of the signaling channel.
|
543
|
+
#
|
544
|
+
# @option params [required, String] :client_id
|
545
|
+
# The unique identifier for the sender client.
|
546
|
+
#
|
547
|
+
# @return [Struct] Returns an empty {Seahorse::Client::Response response}.
|
548
|
+
#
|
549
|
+
# @example Request syntax with placeholder values
|
550
|
+
#
|
551
|
+
# resp = client.join_storage_session_as_viewer({
|
552
|
+
# channel_arn: "ChannelArn", # required
|
553
|
+
# client_id: "ClientId", # required
|
554
|
+
# })
|
555
|
+
#
|
556
|
+
# @see http://docs.aws.amazon.com/goto/WebAPI/kinesis-video-webrtc-storage-2018-05-10/JoinStorageSessionAsViewer AWS API Documentation
|
557
|
+
#
|
558
|
+
# @overload join_storage_session_as_viewer(params = {})
|
559
|
+
# @param [Hash] params ({})
|
560
|
+
def join_storage_session_as_viewer(params = {}, options = {})
|
561
|
+
req = build_request(:join_storage_session_as_viewer, params)
|
562
|
+
req.send_request(options)
|
563
|
+
end
|
564
|
+
|
474
565
|
# @!endgroup
|
475
566
|
|
476
567
|
# @param params ({})
|
477
568
|
# @api private
|
478
569
|
def build_request(operation_name, params = {})
|
479
570
|
handlers = @handlers.for(operation_name)
|
571
|
+
tracer = config.telemetry_provider.tracer_provider.tracer(
|
572
|
+
Aws::Telemetry.module_to_tracer_name('Aws::KinesisVideoWebRTCStorage')
|
573
|
+
)
|
480
574
|
context = Seahorse::Client::RequestContext.new(
|
481
575
|
operation_name: operation_name,
|
482
576
|
operation: config.api.operation(operation_name),
|
483
577
|
client: self,
|
484
578
|
params: params,
|
485
|
-
config: config
|
579
|
+
config: config,
|
580
|
+
tracer: tracer
|
581
|
+
)
|
486
582
|
context[:gem_name] = 'aws-sdk-kinesisvideowebrtcstorage'
|
487
|
-
context[:gem_version] = '1.
|
583
|
+
context[:gem_version] = '1.20.0'
|
488
584
|
Seahorse::Client::Request.new(handlers, context)
|
489
585
|
end
|
490
586
|
|
@@ -15,8 +15,10 @@ module Aws::KinesisVideoWebRTCStorage
|
|
15
15
|
|
16
16
|
AccessDeniedException = Shapes::StructureShape.new(name: 'AccessDeniedException')
|
17
17
|
ChannelArn = Shapes::StringShape.new(name: 'ChannelArn')
|
18
|
+
ClientId = Shapes::StringShape.new(name: 'ClientId')
|
18
19
|
ClientLimitExceededException = Shapes::StructureShape.new(name: 'ClientLimitExceededException')
|
19
20
|
InvalidArgumentException = Shapes::StructureShape.new(name: 'InvalidArgumentException')
|
21
|
+
JoinStorageSessionAsViewerInput = Shapes::StructureShape.new(name: 'JoinStorageSessionAsViewerInput')
|
20
22
|
JoinStorageSessionInput = Shapes::StructureShape.new(name: 'JoinStorageSessionInput')
|
21
23
|
ResourceNotFoundException = Shapes::StructureShape.new(name: 'ResourceNotFoundException')
|
22
24
|
String = Shapes::StringShape.new(name: 'String')
|
@@ -30,6 +32,10 @@ module Aws::KinesisVideoWebRTCStorage
|
|
30
32
|
InvalidArgumentException.add_member(:message, Shapes::ShapeRef.new(shape: String, location_name: "message"))
|
31
33
|
InvalidArgumentException.struct_class = Types::InvalidArgumentException
|
32
34
|
|
35
|
+
JoinStorageSessionAsViewerInput.add_member(:channel_arn, Shapes::ShapeRef.new(shape: ChannelArn, required: true, location_name: "channelArn"))
|
36
|
+
JoinStorageSessionAsViewerInput.add_member(:client_id, Shapes::ShapeRef.new(shape: ClientId, required: true, location_name: "clientId"))
|
37
|
+
JoinStorageSessionAsViewerInput.struct_class = Types::JoinStorageSessionAsViewerInput
|
38
|
+
|
33
39
|
JoinStorageSessionInput.add_member(:channel_arn, Shapes::ShapeRef.new(shape: ChannelArn, required: true, location_name: "channelArn"))
|
34
40
|
JoinStorageSessionInput.struct_class = Types::JoinStorageSessionInput
|
35
41
|
|
@@ -65,6 +71,18 @@ module Aws::KinesisVideoWebRTCStorage
|
|
65
71
|
o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
|
66
72
|
o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
|
67
73
|
end)
|
74
|
+
|
75
|
+
api.add_operation(:join_storage_session_as_viewer, Seahorse::Model::Operation.new.tap do |o|
|
76
|
+
o.name = "JoinStorageSessionAsViewer"
|
77
|
+
o.http_method = "POST"
|
78
|
+
o.http_request_uri = "/joinStorageSessionAsViewer"
|
79
|
+
o.input = Shapes::ShapeRef.new(shape: JoinStorageSessionAsViewerInput)
|
80
|
+
o.output = Shapes::ShapeRef.new(shape: Shapes::StructureShape.new(struct_class: Aws::EmptyStructure))
|
81
|
+
o.errors << Shapes::ShapeRef.new(shape: ClientLimitExceededException)
|
82
|
+
o.errors << Shapes::ShapeRef.new(shape: InvalidArgumentException)
|
83
|
+
o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
|
84
|
+
o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
|
85
|
+
end)
|
68
86
|
end
|
69
87
|
|
70
88
|
end
|
@@ -32,7 +32,7 @@ module Aws::KinesisVideoWebRTCStorage
|
|
32
32
|
raise ArgumentError, "FIPS and DualStack are enabled, but this partition does not support one or both"
|
33
33
|
end
|
34
34
|
if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true)
|
35
|
-
if Aws::Endpoints::Matchers.boolean_equals?(
|
35
|
+
if Aws::Endpoints::Matchers.boolean_equals?(Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS"), true)
|
36
36
|
return Aws::Endpoints::Endpoint.new(url: "https://kinesisvideo-fips.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {})
|
37
37
|
end
|
38
38
|
raise ArgumentError, "FIPS is enabled but this partition does not support FIPS"
|
@@ -26,5 +26,19 @@ module Aws::KinesisVideoWebRTCStorage
|
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
|
+
class JoinStorageSessionAsViewer
|
30
|
+
def self.build(context)
|
31
|
+
unless context.config.regional_endpoint
|
32
|
+
endpoint = context.config.endpoint.to_s
|
33
|
+
end
|
34
|
+
Aws::KinesisVideoWebRTCStorage::EndpointParameters.new(
|
35
|
+
region: context.config.region,
|
36
|
+
use_dual_stack: context.config.use_dualstack_endpoint,
|
37
|
+
use_fips: context.config.use_fips_endpoint,
|
38
|
+
endpoint: endpoint,
|
39
|
+
)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
29
43
|
end
|
30
44
|
end
|
@@ -60,6 +60,8 @@ module Aws::KinesisVideoWebRTCStorage
|
|
60
60
|
case context.operation_name
|
61
61
|
when :join_storage_session
|
62
62
|
Aws::KinesisVideoWebRTCStorage::Endpoints::JoinStorageSession.build(context)
|
63
|
+
when :join_storage_session_as_viewer
|
64
|
+
Aws::KinesisVideoWebRTCStorage::Endpoints::JoinStorageSessionAsViewer.build(context)
|
63
65
|
end
|
64
66
|
end
|
65
67
|
end
|
@@ -50,6 +50,23 @@ module Aws::KinesisVideoWebRTCStorage
|
|
50
50
|
include Aws::Structure
|
51
51
|
end
|
52
52
|
|
53
|
+
# @!attribute [rw] channel_arn
|
54
|
+
# The Amazon Resource Name (ARN) of the signaling channel.
|
55
|
+
# @return [String]
|
56
|
+
#
|
57
|
+
# @!attribute [rw] client_id
|
58
|
+
# The unique identifier for the sender client.
|
59
|
+
# @return [String]
|
60
|
+
#
|
61
|
+
# @see http://docs.aws.amazon.com/goto/WebAPI/kinesis-video-webrtc-storage-2018-05-10/JoinStorageSessionAsViewerInput AWS API Documentation
|
62
|
+
#
|
63
|
+
class JoinStorageSessionAsViewerInput < Struct.new(
|
64
|
+
:channel_arn,
|
65
|
+
:client_id)
|
66
|
+
SENSITIVE = []
|
67
|
+
include Aws::Structure
|
68
|
+
end
|
69
|
+
|
53
70
|
# @!attribute [rw] channel_arn
|
54
71
|
# The Amazon Resource Name (ARN) of the signaling channel.
|
55
72
|
# @return [String]
|
data/sig/client.rbs
CHANGED
@@ -50,6 +50,7 @@ module Aws
|
|
50
50
|
?session_token: String,
|
51
51
|
?sigv4a_signing_region_set: Array[String],
|
52
52
|
?stub_responses: untyped,
|
53
|
+
?telemetry_provider: Aws::Telemetry::TelemetryProviderBase,
|
53
54
|
?token_provider: untyped,
|
54
55
|
?use_dualstack_endpoint: bool,
|
55
56
|
?use_fips_endpoint: bool,
|
@@ -78,6 +79,13 @@ module Aws
|
|
78
79
|
channel_arn: ::String
|
79
80
|
) -> ::Seahorse::Client::_ResponseSuccess[::Aws::EmptyStructure]
|
80
81
|
| (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> ::Seahorse::Client::_ResponseSuccess[::Aws::EmptyStructure]
|
82
|
+
|
83
|
+
# https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/KinesisVideoWebRTCStorage/Client.html#join_storage_session_as_viewer-instance_method
|
84
|
+
def join_storage_session_as_viewer: (
|
85
|
+
channel_arn: ::String,
|
86
|
+
client_id: ::String
|
87
|
+
) -> ::Seahorse::Client::_ResponseSuccess[::Aws::EmptyStructure]
|
88
|
+
| (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> ::Seahorse::Client::_ResponseSuccess[::Aws::EmptyStructure]
|
81
89
|
end
|
82
90
|
end
|
83
91
|
end
|
data/sig/resource.rbs
CHANGED
@@ -50,6 +50,7 @@ module Aws
|
|
50
50
|
?session_token: String,
|
51
51
|
?sigv4a_signing_region_set: Array[String],
|
52
52
|
?stub_responses: untyped,
|
53
|
+
?telemetry_provider: Aws::Telemetry::TelemetryProviderBase,
|
53
54
|
?token_provider: untyped,
|
54
55
|
?use_dualstack_endpoint: bool,
|
55
56
|
?use_fips_endpoint: bool,
|
data/sig/types.rbs
CHANGED
@@ -23,6 +23,12 @@ module Aws::KinesisVideoWebRTCStorage
|
|
23
23
|
SENSITIVE: []
|
24
24
|
end
|
25
25
|
|
26
|
+
class JoinStorageSessionAsViewerInput
|
27
|
+
attr_accessor channel_arn: ::String
|
28
|
+
attr_accessor client_id: ::String
|
29
|
+
SENSITIVE: []
|
30
|
+
end
|
31
|
+
|
26
32
|
class JoinStorageSessionInput
|
27
33
|
attr_accessor channel_arn: ::String
|
28
34
|
SENSITIVE: []
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aws-sdk-kinesisvideowebrtcstorage
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.20.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Amazon Web Services
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-09-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk-core
|
@@ -19,7 +19,7 @@ dependencies:
|
|
19
19
|
version: '3'
|
20
20
|
- - ">="
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: 3.
|
22
|
+
version: 3.203.0
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -29,7 +29,7 @@ dependencies:
|
|
29
29
|
version: '3'
|
30
30
|
- - ">="
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: 3.
|
32
|
+
version: 3.203.0
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: aws-sigv4
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|