// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
/// <p>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. </p>
/// <p>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 href="https://tools.ietf.org/html/draft-uberti-rtcweb-turn-rest-00">A REST API For
/// Access To TURN Services</a>.</p>
/// <p> 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.</p>
#[derive(std::default::Default, std::clone::Clone, std::fmt::Debug)]
pub struct GetIceServerConfig {
    _private: (),
}
impl GetIceServerConfig {
    /// Creates a new builder-style object to manufacture [`GetIceServerConfigInput`](crate::input::GetIceServerConfigInput)
    pub fn builder() -> crate::input::get_ice_server_config_input::Builder {
        crate::input::get_ice_server_config_input::Builder::default()
    }
    pub fn new() -> Self {
        Self { _private: () }
    }
}
impl smithy_http::response::ParseStrictResponse for GetIceServerConfig {
    type Output = std::result::Result<
        crate::output::GetIceServerConfigOutput,
        crate::error::GetIceServerConfigError,
    >;
    fn parse(&self, response: &http::Response<bytes::Bytes>) -> Self::Output {
        if !response.status().is_success() && response.status().as_u16() != 200 {
            crate::operation_deser::parse_get_ice_server_config_error(response)
        } else {
            crate::operation_deser::parse_get_ice_server_config_response(response)
        }
    }
}

/// <p>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.</p>
#[derive(std::default::Default, std::clone::Clone, std::fmt::Debug)]
pub struct SendAlexaOfferToMaster {
    _private: (),
}
impl SendAlexaOfferToMaster {
    /// Creates a new builder-style object to manufacture [`SendAlexaOfferToMasterInput`](crate::input::SendAlexaOfferToMasterInput)
    pub fn builder() -> crate::input::send_alexa_offer_to_master_input::Builder {
        crate::input::send_alexa_offer_to_master_input::Builder::default()
    }
    pub fn new() -> Self {
        Self { _private: () }
    }
}
impl smithy_http::response::ParseStrictResponse for SendAlexaOfferToMaster {
    type Output = std::result::Result<
        crate::output::SendAlexaOfferToMasterOutput,
        crate::error::SendAlexaOfferToMasterError,
    >;
    fn parse(&self, response: &http::Response<bytes::Bytes>) -> Self::Output {
        if !response.status().is_success() && response.status().as_u16() != 200 {
            crate::operation_deser::parse_send_alexa_offer_to_master_error(response)
        } else {
            crate::operation_deser::parse_send_alexa_offer_to_master_response(response)
        }
    }
}
