/*
* 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-signaling-2019-12-04.normal.json service model.
*/
using System;
using System.Collections.Generic;
using System.Net;
using Amazon.KinesisVideoSignalingChannels.Model;
using Amazon.KinesisVideoSignalingChannels.Model.Internal.MarshallTransformations;
using Amazon.KinesisVideoSignalingChannels.Internal;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
using Amazon.Runtime.Internal.Auth;
using Amazon.Runtime.Internal.Transform;
namespace Amazon.KinesisVideoSignalingChannels
{
///
/// Implementation for accessing KinesisVideoSignalingChannels
///
/// Kinesis Video Streams Signaling Service is a intermediate service that establishes
/// a communication channel for discovering peers, transmitting offers and answers in
/// order to establish peer-to-peer connection in webRTC technology.
///
public partial class AmazonKinesisVideoSignalingChannelsClient : AmazonServiceClient, IAmazonKinesisVideoSignalingChannels
{
private static IServiceMetadata serviceMetadata = new AmazonKinesisVideoSignalingChannelsMetadata();
#region Constructors
///
/// Constructs AmazonKinesisVideoSignalingChannelsClient with the credentials loaded from the application's
/// default configuration, and if unsuccessful from the Instance Profile service on an EC2 instance.
///
/// Example App.config with credentials set.
///
/// <?xml version="1.0" encoding="utf-8" ?>
/// <configuration>
/// <appSettings>
/// <add key="AWSProfileName" value="AWS Default"/>
/// </appSettings>
/// </configuration>
///
///
///
public AmazonKinesisVideoSignalingChannelsClient()
: base(FallbackCredentialsFactory.GetCredentials(), new AmazonKinesisVideoSignalingChannelsConfig()) { }
///
/// Constructs AmazonKinesisVideoSignalingChannelsClient with the credentials loaded from the application's
/// default configuration, and if unsuccessful from the Instance Profile service on an EC2 instance.
///
/// Example App.config with credentials set.
///
/// <?xml version="1.0" encoding="utf-8" ?>
/// <configuration>
/// <appSettings>
/// <add key="AWSProfileName" value="AWS Default"/>
/// </appSettings>
/// </configuration>
///
///
///
/// The region to connect.
public AmazonKinesisVideoSignalingChannelsClient(RegionEndpoint region)
: base(FallbackCredentialsFactory.GetCredentials(), new AmazonKinesisVideoSignalingChannelsConfig{RegionEndpoint = region}) { }
///
/// Constructs AmazonKinesisVideoSignalingChannelsClient with the credentials loaded from the application's
/// default configuration, and if unsuccessful from the Instance Profile service on an EC2 instance.
///
/// Example App.config with credentials set.
///
/// <?xml version="1.0" encoding="utf-8" ?>
/// <configuration>
/// <appSettings>
/// <add key="AWSProfileName" value="AWS Default"/>
/// </appSettings>
/// </configuration>
///
///
///
/// The AmazonKinesisVideoSignalingChannelsClient Configuration Object
public AmazonKinesisVideoSignalingChannelsClient(AmazonKinesisVideoSignalingChannelsConfig config)
: base(FallbackCredentialsFactory.GetCredentials(config), config){}
///
/// Constructs AmazonKinesisVideoSignalingChannelsClient with AWS Credentials
///
/// AWS Credentials
public AmazonKinesisVideoSignalingChannelsClient(AWSCredentials credentials)
: this(credentials, new AmazonKinesisVideoSignalingChannelsConfig())
{
}
///
/// Constructs AmazonKinesisVideoSignalingChannelsClient with AWS Credentials
///
/// AWS Credentials
/// The region to connect.
public AmazonKinesisVideoSignalingChannelsClient(AWSCredentials credentials, RegionEndpoint region)
: this(credentials, new AmazonKinesisVideoSignalingChannelsConfig{RegionEndpoint = region})
{
}
///
/// Constructs AmazonKinesisVideoSignalingChannelsClient with AWS Credentials and an
/// AmazonKinesisVideoSignalingChannelsClient Configuration object.
///
/// AWS Credentials
/// The AmazonKinesisVideoSignalingChannelsClient Configuration Object
public AmazonKinesisVideoSignalingChannelsClient(AWSCredentials credentials, AmazonKinesisVideoSignalingChannelsConfig clientConfig)
: base(credentials, clientConfig)
{
}
///
/// Constructs AmazonKinesisVideoSignalingChannelsClient with AWS Access Key ID and AWS Secret Key
///
/// AWS Access Key ID
/// AWS Secret Access Key
public AmazonKinesisVideoSignalingChannelsClient(string awsAccessKeyId, string awsSecretAccessKey)
: this(awsAccessKeyId, awsSecretAccessKey, new AmazonKinesisVideoSignalingChannelsConfig())
{
}
///
/// Constructs AmazonKinesisVideoSignalingChannelsClient with AWS Access Key ID and AWS Secret Key
///
/// AWS Access Key ID
/// AWS Secret Access Key
/// The region to connect.
public AmazonKinesisVideoSignalingChannelsClient(string awsAccessKeyId, string awsSecretAccessKey, RegionEndpoint region)
: this(awsAccessKeyId, awsSecretAccessKey, new AmazonKinesisVideoSignalingChannelsConfig() {RegionEndpoint=region})
{
}
///
/// Constructs AmazonKinesisVideoSignalingChannelsClient with AWS Access Key ID, AWS Secret Key and an
/// AmazonKinesisVideoSignalingChannelsClient Configuration object.
///
/// AWS Access Key ID
/// AWS Secret Access Key
/// The AmazonKinesisVideoSignalingChannelsClient Configuration Object
public AmazonKinesisVideoSignalingChannelsClient(string awsAccessKeyId, string awsSecretAccessKey, AmazonKinesisVideoSignalingChannelsConfig clientConfig)
: base(awsAccessKeyId, awsSecretAccessKey, clientConfig)
{
}
///
/// Constructs AmazonKinesisVideoSignalingChannelsClient with AWS Access Key ID and AWS Secret Key
///
/// AWS Access Key ID
/// AWS Secret Access Key
/// AWS Session Token
public AmazonKinesisVideoSignalingChannelsClient(string awsAccessKeyId, string awsSecretAccessKey, string awsSessionToken)
: this(awsAccessKeyId, awsSecretAccessKey, awsSessionToken, new AmazonKinesisVideoSignalingChannelsConfig())
{
}
///
/// Constructs AmazonKinesisVideoSignalingChannelsClient with AWS Access Key ID and AWS Secret Key
///
/// AWS Access Key ID
/// AWS Secret Access Key
/// AWS Session Token
/// The region to connect.
public AmazonKinesisVideoSignalingChannelsClient(string awsAccessKeyId, string awsSecretAccessKey, string awsSessionToken, RegionEndpoint region)
: this(awsAccessKeyId, awsSecretAccessKey, awsSessionToken, new AmazonKinesisVideoSignalingChannelsConfig{RegionEndpoint = region})
{
}
///
/// Constructs AmazonKinesisVideoSignalingChannelsClient with AWS Access Key ID, AWS Secret Key and an
/// AmazonKinesisVideoSignalingChannelsClient Configuration object.
///
/// AWS Access Key ID
/// AWS Secret Access Key
/// AWS Session Token
/// The AmazonKinesisVideoSignalingChannelsClient Configuration Object
public AmazonKinesisVideoSignalingChannelsClient(string awsAccessKeyId, string awsSecretAccessKey, string awsSessionToken, AmazonKinesisVideoSignalingChannelsConfig clientConfig)
: base(awsAccessKeyId, awsSecretAccessKey, awsSessionToken, clientConfig)
{
}
#endregion
#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 AmazonKinesisVideoSignalingChannelsEndpointResolver());
}
///
/// 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 GetIceServerConfig
///
/// Gets the Interactive Connectivity Establishment (ICE) server configuration information,
/// including URIs, username, and password which can be used to configure the WebRTC connection.
/// The ICE component uses this configuration information to setup the WebRTC connection,
/// including authenticating with the Traversal Using Relays around NAT (TURN) relay server.
///
///
///
///
/// TURN is a protocol that is used to improve the connectivity of peer-to-peer applications.
/// By providing a cloud-based relay service, TURN ensures that a connection can be established
/// even when one or more peers are incapable of a direct peer-to-peer connection. For
/// more information, see A
/// REST API For Access To TURN Services.
///
///
///
/// You can invoke this API to establish a fallback mechanism in case either of the peers
/// is unable to establish a direct peer-to-peer connection over a signaling channel.
/// You must specify either a signaling channel ARN or the client ID in order to invoke
/// this API.
///
///
/// Container for the necessary parameters to execute the GetIceServerConfig service method.
///
/// The response from the GetIceServerConfig service method, as returned by KinesisVideoSignalingChannels.
///
/// Your request was throttled because you have exceeded the limit of allowed client calls.
/// Try making the call later.
///
///
/// The value for this input parameter is invalid.
///
///
/// The specified client is invalid.
///
///
/// The caller is not authorized to perform this operation.
///
///
/// The specified resource is not found.
///
///
/// If the client session is expired. Once the client is connected, the session is valid
/// for 45 minutes. Client should reconnect to the channel to continue sending/receiving
/// messages.
///
/// REST API Reference for GetIceServerConfig Operation
public virtual GetIceServerConfigResponse GetIceServerConfig(GetIceServerConfigRequest request)
{
var options = new InvokeOptions();
options.RequestMarshaller = GetIceServerConfigRequestMarshaller.Instance;
options.ResponseUnmarshaller = GetIceServerConfigResponseUnmarshaller.Instance;
return Invoke(request, options);
}
///
/// Initiates the asynchronous execution of the GetIceServerConfig operation.
///
///
/// Container for the necessary parameters to execute the GetIceServerConfig operation on AmazonKinesisVideoSignalingChannelsClient.
/// 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 EndGetIceServerConfig
/// operation.
/// REST API Reference for GetIceServerConfig Operation
public virtual IAsyncResult BeginGetIceServerConfig(GetIceServerConfigRequest request, AsyncCallback callback, object state)
{
var options = new InvokeOptions();
options.RequestMarshaller = GetIceServerConfigRequestMarshaller.Instance;
options.ResponseUnmarshaller = GetIceServerConfigResponseUnmarshaller.Instance;
return BeginInvoke(request, options, callback, state);
}
///
/// Finishes the asynchronous execution of the GetIceServerConfig operation.
///
///
/// The IAsyncResult returned by the call to BeginGetIceServerConfig.
///
/// Returns a GetIceServerConfigResult from KinesisVideoSignalingChannels.
/// REST API Reference for GetIceServerConfig Operation
public virtual GetIceServerConfigResponse EndGetIceServerConfig(IAsyncResult asyncResult)
{
return EndInvoke(asyncResult);
}
#endregion
#region SendAlexaOfferToMaster
///
/// This API allows you to connect WebRTC-enabled devices with Alexa display devices.
/// When invoked, it sends the Alexa Session Description Protocol (SDP) offer to the master
/// peer. The offer is delivered as soon as the master is connected to the specified signaling
/// channel. This API returns the SDP answer from the connected master. If the master
/// is not connected to the signaling channel, redelivery requests are made until the
/// message expires.
///
/// Container for the necessary parameters to execute the SendAlexaOfferToMaster service method.
///
/// The response from the SendAlexaOfferToMaster service method, as returned by KinesisVideoSignalingChannels.
///
/// Your request was throttled because you have exceeded the limit of allowed client calls.
/// Try making the call later.
///
///
/// The value for this input parameter is invalid.
///
///
/// The caller is not authorized to perform this operation.
///
///
/// The specified resource is not found.
///
/// REST API Reference for SendAlexaOfferToMaster Operation
public virtual SendAlexaOfferToMasterResponse SendAlexaOfferToMaster(SendAlexaOfferToMasterRequest request)
{
var options = new InvokeOptions();
options.RequestMarshaller = SendAlexaOfferToMasterRequestMarshaller.Instance;
options.ResponseUnmarshaller = SendAlexaOfferToMasterResponseUnmarshaller.Instance;
return Invoke(request, options);
}
///
/// Initiates the asynchronous execution of the SendAlexaOfferToMaster operation.
///
///
/// Container for the necessary parameters to execute the SendAlexaOfferToMaster operation on AmazonKinesisVideoSignalingChannelsClient.
/// 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 EndSendAlexaOfferToMaster
/// operation.
/// REST API Reference for SendAlexaOfferToMaster Operation
public virtual IAsyncResult BeginSendAlexaOfferToMaster(SendAlexaOfferToMasterRequest request, AsyncCallback callback, object state)
{
var options = new InvokeOptions();
options.RequestMarshaller = SendAlexaOfferToMasterRequestMarshaller.Instance;
options.ResponseUnmarshaller = SendAlexaOfferToMasterResponseUnmarshaller.Instance;
return BeginInvoke(request, options, callback, state);
}
///
/// Finishes the asynchronous execution of the SendAlexaOfferToMaster operation.
///
///
/// The IAsyncResult returned by the call to BeginSendAlexaOfferToMaster.
///
/// Returns a SendAlexaOfferToMasterResult from KinesisVideoSignalingChannels.
/// REST API Reference for SendAlexaOfferToMaster Operation
public virtual SendAlexaOfferToMasterResponse EndSendAlexaOfferToMaster(IAsyncResult asyncResult)
{
return EndInvoke(asyncResult);
}
#endregion
}
}