Skip to content

Commit

Permalink
Chime Sdk Media Pipelines
Browse files Browse the repository at this point in the history
Add functions and required types for some of the Chime
Media Pipelines API:
- CreateMediaCapturePipeline
- DeleteMediaCapturePipeline
- CreateMediaConcatenationPipeline
  • Loading branch information
firx committed Jul 21, 2023
1 parent ed8f663 commit d22e293
Show file tree
Hide file tree
Showing 27 changed files with 481 additions and 9 deletions.
10 changes: 5 additions & 5 deletions lib/ex_aws/chime.ex
Original file line number Diff line number Diff line change
Expand Up @@ -1231,7 +1231,7 @@ defmodule ExAws.Chime do

defp parse({:error, error}, _), do: {:error, error}

defp normalise_data(struct) when is_map(struct) do
def normalise_data(struct) when is_map(struct) do
struct
|> Map.drop([:__struct__])
|> Enum.reduce(%{}, fn
Expand All @@ -1241,8 +1241,8 @@ defmodule ExAws.Chime do
end)
end

defp normalise_data(v) when is_list(v), do: Enum.map(v, &normalise_data/1)
defp normalise_data(v) when is_binary(v), do: v
defp normalise_data(v) when is_integer(v), do: v
defp normalise_data(v) when is_boolean(v), do: v
def normalise_data(v) when is_list(v), do: Enum.map(v, &normalise_data/1)
def normalise_data(v) when is_binary(v), do: v
def normalise_data(v) when is_integer(v), do: v
def normalise_data(v) when is_boolean(v), do: v
end
66 changes: 66 additions & 0 deletions lib/ex_aws/chime/media_pipelines.ex
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
defmodule ExAws.Chime.MediaPipelines do
@moduledoc """
"""

alias ExAws.Chime
alias ExAws.Operation.JSON
alias ExAws.Operation.RestQuery

Check warning on line 7 in lib/ex_aws/chime/media_pipelines.ex

View workflow job for this annotation

GitHub Actions / build (23.3.4.18, 1.10.4)

unused alias RestQuery

Check warning on line 7 in lib/ex_aws/chime/media_pipelines.ex

View workflow job for this annotation

GitHub Actions / build (23.3.4.18, 1.11.4)

unused alias RestQuery

Check warning on line 7 in lib/ex_aws/chime/media_pipelines.ex

View workflow job for this annotation

GitHub Actions / build (23.3.4.18, 1.12.3)

unused alias RestQuery

Check warning on line 7 in lib/ex_aws/chime/media_pipelines.ex

View workflow job for this annotation

GitHub Actions / build (23.3.4.18, 1.13.4)

unused alias RestQuery

Check warning on line 7 in lib/ex_aws/chime/media_pipelines.ex

View workflow job for this annotation

GitHub Actions / build (23.3.4.18, 1.14.2)

unused alias RestQuery

### AWS Chime Media Pipelines API

@spec create_media_capture_pipeline(
String.t(),
String.t(),
ChimeSdkMeetingConfiguration.t(),
[Tag.t()] | nil
) :: JSON.t()
def create_media_capture_pipeline(source_arn, sink_arn, config \\ nil, tags \\ nil) do
json_request(
"/sdk-media-capture-pipelines",
%{
SourceType: "ChimeSdkMeeting",
SourceArn: source_arn,
SinkType: "S3Bucket",
SinkArn: sink_arn,
ChimeSdkMeetingConfiguration: config,
Tags: tags
}
)
end

@spec delete_media_capture_pipeline(String.t()) :: JSON.t()
def delete_media_capture_pipeline(pipeline_id) do
json_request(
"/sdk-media-capture-pipelines/#{pipeline_id}",
%{},
:delete
)
end

# See https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaConcatenationPipeline.html
@spec create_media_concatenation_pipeline([ConcatenationSource.t()], [ConcatenationSink.t()], [
Tag.t() | nil
]) :: JSON.t()
def create_media_concatenation_pipeline(sources, sinks, tags \\ nil) do
json_request(
"/sdk-media-concatenation-pipelines",
%{
Sources: sources,
Sinks: sinks,
Tags: tags
}
)
end

### HELPERS

defp json_request(path, data, method \\ :post) do
%JSON{
headers: [{"content-type", "application/json"}],
http_method: method,
path: path,
data: Chime.normalise_data(data),
service: :"chime-sdk-media-pipelines"
}
end
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
defmodule ExAws.Chime.MediaPipelines.ArtifactsConcatenationConfiguration do
@moduledoc """
Module representing the Chime ArtifactsConcatenationConfiguration data type
See https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_ArtifactsConcatenationConfiguration.html
"""

defstruct [
:audio,
:composited_video,
:content,
:data_channel,
:meeting_events,
:transcription_messages,
:video
]

alias ExAws.Chime.MediaPipelines.AudioConcatenationConfiguration
alias ExAws.Chime.MediaPipelines.CompositedVideoConcatenationConfiguration
alias ExAws.Chime.MediaPipelines.ConcentConcatenationConfiguration
alias ExAws.Chime.MediaPipelines.DataChannelConcatenationConfiguration
alias ExAws.Chime.MediaPipelines.MeetingEventsConcatenationConfiguration
alias ExAws.Chime.MediaPipelines.TranscriptionMessagesConcatenationConfiguration
alias ExAws.Chime.MediaPipelines.VideoConcatenationConfiguration

@type t :: %__MODULE__{
audio: AudioConcatenationConfiguration.t(),
composited_video: CompositedVideoConcatenationConfiguration.t(),
content: ConcentConcatenationConfiguration.t(),
data_channel: DataChannelConcatenationConfiguration.t(),
meeting_events: MeetingEventsConcatenationConfiguration.t(),
transcription_messages: TranscriptionMessagesConcatenationConfiguration.t(),
video: VideoConcatenationConfiguration.t()
}
end
21 changes: 21 additions & 0 deletions lib/ex_aws/chime/media_pipelines/artifacts_configuration.ex
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
defmodule ExAws.Chime.MediaPipelines.ArtifactsConfiguration do
@moduledoc """
Module representing the Chime ArtifactsConfiguration data type
See https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_ArtifactsConfiguration.html
"""

defstruct [
:audio,
:content,
:video,
:composited_video
]

@type t :: %__MODULE__{
audio: ExAws.Chime.MediaPipelines.AudioArtifactsConfiguration.t(),
content: ExAws.Chime.MediaPipelines.ConcentArtifactsConfiguration.t(),
video: ExAws.Chime.MediaPipelines.VideoArtifactsConfiguration.t(),
composited_video: ExAws.Chime.MediaPipelines.CompositedVideoArtifactsConfiguration.t()
}
end
16 changes: 16 additions & 0 deletions lib/ex_aws/chime/media_pipelines/audio_artifacts_configuration.ex
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
defmodule ExAws.Chime.MediaPipelines.AudioArtifactsConfiguration do
@moduledoc """
Module representing the Chime AudioArtifactsConfiguration data type
See https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_AudioArtifactsConfiguration.html
"""

defstruct [
:mux_type
]

@type t :: %__MODULE__{
# AudioOnly | AudioWithActiveSpeakerVideo | AudioWithCompositedVideo
mux_type: String.t()
}
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
defmodule ExAws.Chime.MediaPipelines.AudioConcatenationConfiguration do
@moduledoc """
Module representing the Chime AudioConcatenationConfiguration data type
See https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_AudioConcatenationConfiguration.html
"""

defstruct [
:state
]

@type t :: %__MODULE__{
# Enabled | Disabled
state: String.t()
}
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
defmodule ExAws.Chime.MediaPipelines.ChimeSdkMeetingConcatenationConfiguration do
@moduledoc """
Module representing the Chime ChimeSdkMeetingConcatenationConfiguration data type.
See https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_ChimeSdkMeetingConcatenationConfiguration.html
"""

defstruct [
:artifacts_configuration
]

@type t :: %__MODULE__{
artifacts_configuration: ArtifactsConcatenationConfiguration.t()
}
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
defmodule ExAws.Chime.ChimeSdkMeetingConfiguration do
@moduledoc """
Module representing the Chime ChimeSdkMeetingConfiguration data type.
See https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_ChimeSdkMeetingConfiguration.html
"""

alias ExAws.Chime.MediaPipelines.ArtifactsConfiguration
alias ExAws.Chime.MediaPipelines.SourceConfiguration

defstruct [
:artifacts_configuration,
:source_configuration
]

@type t :: %__MODULE__{
artifacts_configuration: ArtifactsConfiguration.t() | nil,
source_configuration: SourceConfiguration.t() | nil
}
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
defmodule ExAws.Chime.MediaPipelines.CompositedVideoArtifactsConfiguration do
@moduledoc """
Module representing the Chime CompositedVideoArtifactsConfiguration data type
See https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CompositedVideoArtifactsConfiguration.html
"""

defstruct [
:grid_view_configuration,
:layout,
:resolution
]

@type t :: %__MODULE__{
grid_view_configuration: ExAws.Chime.MediaPipelines.GridViewConfiguration.t(),
# GridView
layout: String.t() | nil,
# HD | FHD
resolution: String.t() | nil
}
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
defmodule ExAws.Chime.MediaPipelines.CompositedVideoConcatenationConfiguration do
@moduledoc """
Module representing the Chime CompositedVideoConcatenationConfiguration data type
See https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CompositedVideoConcatenationConfiguration.html
"""

defstruct [
:state
]

@type t :: %__MODULE__{
# Enabled | Disabled
state: String.t()
}
end
18 changes: 18 additions & 0 deletions lib/ex_aws/chime/media_pipelines/concatenation_sink.ex
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
defmodule ExAws.Chime.MediaPipelines.ConcatenationSink do
@moduledoc """
Module representing the Chime ConcatenationSink data type
See https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_ConcatenationSink.html
"""

defstruct [
:s3_bucket_sink_configuration,
:type
]

@type t :: %__MODULE__{
s3_bucket_sink_configuration: ExAws.Chime.MediaPipelines.S3BucketSinkConfiguration.t(),
# S3Bucket
type: String.t()
}
end
19 changes: 19 additions & 0 deletions lib/ex_aws/chime/media_pipelines/concatenation_source.ex
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
defmodule ExAws.Chime.MediaPipelines.ConcatenationSource do
@moduledoc """
Module representing the Chime ConcatenationSource data type
See https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_ConcatenationSource.html
"""

defstruct [
:media_capture_pipeline_source_configuration,
:type
]

@type t :: %__MODULE__{
media_capture_pipeline_source_configuration:
ExAws.Chime.MediaPipelines.MediaCapturePipelineSourceConfiguration.t(),
# MediaCapturePipeline
type: String.t()
}
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
defmodule ExAws.Chime.MediaPipelines.ContentArtifactsConfiguration do
@moduledoc """
Module representing the Chime ContentArtifactsConfiguration data type
See https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_ContentArtifactsConfiguration.html
"""

defstruct [
:state,
:mux_type
]

@type t :: %__MODULE__{
# Enabled | Disabled
state: String.t(),
# ContentOnly
mux_type: String.t() | nil
}
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
defmodule ExAws.Chime.MediaPipelines.ContentConcatenationConfiguration do
@moduledoc """
Module representing the Chime ContentConcatenationConfiguration data type
See https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_ContentConcatenationConfiguration.html
"""

defstruct [
:state
]

@type t :: %__MODULE__{
# Enabled | Disabled
state: String.t()
}
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
defmodule ExAws.Chime.MediaPipelines.DataChannelConcatenationConfiguration do
@moduledoc """
Module representing the Chime DataChannelConcatenationConfiguration data type
See https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_DataChannelConcatenationConfiguration.html
"""

defstruct [
:state
]

@type t :: %__MODULE__{
# Enabled | Disabled
state: String.t()
}
end
18 changes: 18 additions & 0 deletions lib/ex_aws/chime/media_pipelines/grid_view_configuration.ex
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
defmodule ExAws.Chime.MediaPipelines.GridViewConfiguration do
@moduledoc """
Module representing the Chime GridViewConfiguration data type
See https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_GridViewConfiguration.html
"""

defstruct [
:contents_share_layout,
:presenter_only_configuration
]

@type t :: %__MODULE__{
# PresenterOnly | Horizontal | Vertical
contents_share_layout: String.t(),
presenter_only_configuration:
ExAws.Chime.MediaPipelines.PresenterOnlyConfiguration.t() | nil
}
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
defmodule ExAws.Chime.MediaPipelines.MediaCapturePipelineSourceConfiguration do
@moduledoc """
Module representing the Chime MediaCapturePipelineSourceConfiguration data type
See https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_MediaCapturePipelineSourceConfiguration.html
"""

defstruct [
:chime_sdk_meeting_configuration,
:media_pipeline_arn
]

@type t :: %__MODULE__{
chime_sdk_meeting_configuration:
ExAws.Chime.MediaPipelines.ChimeSdkMeetingConcatenationConfiguration.t(),
media_pipeline_arn: String.t()
}
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
defmodule ExAws.Chime.MediaPipelines.MeetingEventsConcatenationConfiguration do
@moduledoc """
Module representing the Chime MeetingEventsConcatenationConfiguration data type
See https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_MeetingEventsConcatenationConfiguration.html
"""

defstruct [
:state
]

@type t :: %__MODULE__{
# Enabled | Disabled
state: String.t()
}
end
Loading

0 comments on commit d22e293

Please sign in to comment.