/* * 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.Runtime.ExceptionServices; using System.Threading; using System.Threading.Tasks; 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); } /// /// 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. /// /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. /// /// /// 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 Task GetMediaAsync(GetMediaRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken)) { var options = new InvokeOptions(); options.RequestMarshaller = GetMediaRequestMarshaller.Instance; options.ResponseUnmarshaller = GetMediaResponseUnmarshaller.Instance; return InvokeAsync(request, options, cancellationToken); } #endregion } }