Current section
Files
Jump to
Current section
Files
lib/ex_aws/elastic_transcoder.ex
defmodule ExAws.ElasticTranscoder do
@moduledoc """
Operations on AWS Elastic Transcoder
### Examples
```
ElasticTranscoder.list_pipelines() |> ExAws.request!()
ElasticTranscoder.create_job(%{"Key" => "abcd.mp4", ...}) |> ExAws.request!()
```
"""
@api_version_date "2012-09-25"
########################
### Pipeline Actions ###
########################
@doc "List pipelines, may return paginated result"
def list_pipelines(next_token \\ nil) do
request(:get, "/pipelines", with_next_token(next_token))
end
@doc "Get description of a single pipeline"
def read_pipeline(pipeline_id) do
request(:get, "/pipelines/#{pipeline_id}")
end
@doc "Create a new pipeline"
def create_pipeline(data) do
request(:post, "/pipelines", data)
end
@doc "Update an existing pipeline, omit attributes to leave them unchanged"
def update_pipeline(pipeline_id, data) do
request(:put, "/pipelines/#{pipeline_id}", data)
end
@doc "Update the status of an existing pipeline"
def update_pipeline_status(pipeline_id, status) when status in ["Active", "Paused"] do
request(:post, "/pipelines/#{pipeline_id}/status", %{"Status" => status})
end
@doc "Update the notification callback SNS queue ARNs of an existing pipeline"
def update_pipeline_notifications(pipeline_id, notifications) do
request(:post, "/pipelines/#{pipeline_id}/notifications", %{"Notifications" => notifications})
end
@doc "Delete a pipeline"
def delete_pipeline(pipeline_id) do
request(:delete, "/pipelines/#{pipeline_id}")
end
###################
### Job Actions ###
###################
@doc "List jobs of a given pipeline, may return paginated result"
def list_jobs_by_pipeline(pipeline_id, next_token \\ nil) do
request(:get, "/jobsByPipeline/#{pipeline_id}", with_next_token(next_token))
end
@doc "List jobs with a given status, may return paginated result"
def list_jobs_by_status(status, next_token \\ nil) when status in ["Submitted", "Progressing", "Complete", "Canceled", "Error"] do
request(:get, "/jobsByStatus/#{status}", with_next_token(next_token))
end
@doc "Get description of a single job"
def read_job(job_id) do
request(:get, "/jobs/#{job_id}")
end
@doc "Create a new job"
def create_job(data) do
request(:post, "/jobs", data)
end
@doc "Cancel a pending job"
def cancel_job(job_id) do
request(:delete, "/jobs/#{job_id}")
end
######################
### Preset Actions ###
######################
@doc "List all preset, may return paginated result"
def list_presets(next_token \\ nil) do
request(:get, "/presets", with_next_token(next_token))
end
@doc "Get description of a single preset"
def read_preset(preset_id) do
request(:get, "/presets/#{preset_id}")
end
@doc "Create a new preset"
def create_preset(data) do
request(:post, "/presets", data)
end
@doc "Delete a preset"
def delete_preset(preset_id) do
request(:delete, "/presets/#{preset_id}")
end
defp with_next_token(nil), do: %{}
defp with_next_token(token), do: %{"PageToken" => token}
defp request(http_method, path, data \\ %{})
defp request(:get, path, data) do
%ExAws.Operation.JSON{
http_method: :get,
path: "/" <> @api_version_date <> path,
params: data,
service: :elastictranscoder,
}
end
defp request(http_method, path, data) do
%ExAws.Operation.JSON{
http_method: http_method,
path: "/" <> @api_version_date <> path,
data: data,
service: :elastictranscoder,
}
end
end