/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
/*
* Do not modify this file. This file is generated from the kinesis-video-media-2017-09-30.normal.json service model.
*/
using System;
using System.Collections.Generic;
using System.Net;
using Amazon.KinesisVideoMedia.Model;
using Amazon.KinesisVideoMedia.Model.Internal.MarshallTransformations;
using Amazon.KinesisVideoMedia.Internal;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
using Amazon.Runtime.Internal.Auth;
using Amazon.Runtime.Internal.Transform;
namespace Amazon.KinesisVideoMedia
{
///
/// Implementation for accessing KinesisVideoMedia
///
///
///
public partial class AmazonKinesisVideoMediaClient : AmazonServiceClient, IAmazonKinesisVideoMedia
{
private static IServiceMetadata serviceMetadata = new AmazonKinesisVideoMediaMetadata();
#region Overrides
///
/// Creates the signer for the service.
///
protected override AbstractAWSSigner CreateSigner()
{
return new AWS4Signer();
}
///
/// Customize the pipeline
///
///
protected override void CustomizeRuntimePipeline(RuntimePipeline pipeline)
{
pipeline.RemoveHandler();
pipeline.AddHandlerAfter(new AmazonKinesisVideoMediaEndpointResolver());
}
///
/// Capture metadata for the service.
///
protected override IServiceMetadata ServiceMetadata
{
get
{
return serviceMetadata;
}
}
#endregion
#region Dispose
///
/// Disposes the service client.
///
protected override void Dispose(bool disposing)
{
base.Dispose(disposing);
}
#endregion
#region GetMedia
///
/// Use this API to retrieve media content from a Kinesis video stream. In the request,
/// you identify the stream name or stream Amazon Resource Name (ARN), and the starting
/// chunk. Kinesis Video Streams then returns a stream of chunks in order by fragment
/// number.
///
///
///
/// You must first call the GetDataEndpoint
API to get an endpoint. Then
/// send the GetMedia
requests to this endpoint using the --endpoint-url
/// parameter.
///
///
///
/// When you put media data (fragments) on a stream, Kinesis Video Streams stores each
/// incoming fragment and related metadata in what is called a "chunk." For more information,
/// see PutMedia.
/// The GetMedia
API returns a stream of these chunks starting from the chunk
/// that you specify in the request.
///
///
///
/// The following limits apply when using the GetMedia
API:
///
/// -
///
/// A client can call
GetMedia
up to five times per second per stream.
///
/// -
///
/// Kinesis Video Streams sends media data at a rate of up to 25 megabytes per second
/// (or 200 megabits per second) during a
GetMedia
session.
///
///
///
/// If an error is thrown after invoking a Kinesis Video Streams media API, in addition
/// to the HTTP status code and the response body, it includes the following pieces of
/// information:
///
/// -
///
///
x-amz-ErrorType
HTTP header – contains a more specific error type in
/// addition to what the HTTP status code provides.
///
/// -
///
///
x-amz-RequestId
HTTP header – if you want to report an issue to AWS,
/// the support team can better diagnose the problem if given the Request Id.
///
///
///
/// Both the HTTP status code and the ErrorType header can be utilized to make programmatic
/// decisions about whether errors are retry-able and under what conditions, as well as
/// provide information on what actions the client programmer might need to take in order
/// to successfully try again.
///
///
///
/// For more information, see the Errors section at the bottom of this topic, as
/// well as Common
/// Errors.
///
///
///
/// Container for the necessary parameters to execute the GetMedia service method.
///
/// The response from the GetMedia service method, as returned by KinesisVideoMedia.
///
/// Kinesis Video Streams has throttled the request because you have exceeded the limit
/// of allowed client calls. Try making the call later.
///
///
/// Kinesis Video Streams has throttled the request because you have exceeded the limit
/// of allowed client connections.
///
///
/// The value for this input parameter is invalid.
///
///
/// Status Code: 400, Caller used wrong endpoint to write data to a stream. On receiving
/// such an exception, the user must call GetDataEndpoint
with AccessMode
/// set to "READ" and use the endpoint Kinesis Video returns in the next GetMedia
/// call.
///
///
/// Status Code: 403, The caller is not authorized to perform an operation on the given
/// stream, or the token has expired.
///
///
/// Status Code: 404, The stream with the given name does not exist.
///
/// REST API Reference for GetMedia Operation
public virtual GetMediaResponse GetMedia(GetMediaRequest request)
{
var options = new InvokeOptions();
options.RequestMarshaller = GetMediaRequestMarshaller.Instance;
options.ResponseUnmarshaller = GetMediaResponseUnmarshaller.Instance;
return Invoke(request, options);
}
///
/// Initiates the asynchronous execution of the GetMedia operation.
///
///
/// Container for the necessary parameters to execute the GetMedia operation on AmazonKinesisVideoMediaClient.
/// An AsyncCallback delegate that is invoked when the operation completes.
/// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
/// procedure using the AsyncState property.
///
/// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndGetMedia
/// operation.
/// REST API Reference for GetMedia Operation
public virtual IAsyncResult BeginGetMedia(GetMediaRequest request, AsyncCallback callback, object state)
{
var options = new InvokeOptions();
options.RequestMarshaller = GetMediaRequestMarshaller.Instance;
options.ResponseUnmarshaller = GetMediaResponseUnmarshaller.Instance;
return BeginInvoke(request, options, callback, state);
}
///
/// Finishes the asynchronous execution of the GetMedia operation.
///
///
/// The IAsyncResult returned by the call to BeginGetMedia.
///
/// Returns a GetMediaResult from KinesisVideoMedia.
/// REST API Reference for GetMedia Operation
public virtual GetMediaResponse EndGetMedia(IAsyncResult asyncResult)
{
return EndInvoke(asyncResult);
}
#endregion
}
}