{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.RTCIceCandidate
       (newRTCIceCandidate, getCandidate, getSdpMid, getSdpMidUnsafe,
        getSdpMidUnchecked, getSdpMLineIndex, getSdpMLineIndexUnsafe,
        getSdpMLineIndexUnchecked, RTCIceCandidate(..),
        gTypeRTCIceCandidate)
       where
import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
import qualified Prelude (error)
import Data.Typeable (Typeable)
import Data.Traversable (mapM)
import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
import Data.Int (Int64)
import Data.Word (Word, Word64)
import JSDOM.Types
import Control.Applicative ((<$>))
import Control.Monad (void)
import Control.Lens.Operators ((^.))
import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
import JSDOM.Enums

-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate Mozilla RTCIceCandidate documentation> 
newRTCIceCandidate ::
                   (MonadDOM m) => RTCIceCandidateInit -> m RTCIceCandidate
newRTCIceCandidate :: RTCIceCandidateInit -> m RTCIceCandidate
newRTCIceCandidate RTCIceCandidateInit
candidateInitDict
  = DOM RTCIceCandidate -> m RTCIceCandidate
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSVal -> RTCIceCandidate
RTCIceCandidate (JSVal -> RTCIceCandidate) -> JSM JSVal -> DOM RTCIceCandidate
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
         JSM JSVal -> [JSM JSVal] -> JSM JSVal
forall constructor args.
(MakeObject constructor, MakeArgs args) =>
constructor -> args -> JSM JSVal
new ([Char] -> JSM JSVal
forall a. ToJSString a => a -> JSM JSVal
jsg [Char]
"RTCIceCandidate") [RTCIceCandidateInit -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal RTCIceCandidateInit
candidateInitDict])

-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate.candidate Mozilla RTCIceCandidate.candidate documentation> 
getCandidate ::
             (MonadDOM m, FromJSString result) => RTCIceCandidate -> m result
getCandidate :: RTCIceCandidate -> m result
getCandidate RTCIceCandidate
self
  = DOM result -> m result
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((RTCIceCandidate
self RTCIceCandidate
-> Getting (JSM JSVal) RTCIceCandidate (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter RTCIceCandidate (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"candidate") JSM JSVal -> (JSVal -> DOM result) -> DOM result
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM result
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate.sdpMid Mozilla RTCIceCandidate.sdpMid documentation> 
getSdpMid ::
          (MonadDOM m, FromJSString result) =>
            RTCIceCandidate -> m (Maybe result)
getSdpMid :: RTCIceCandidate -> m (Maybe result)
getSdpMid RTCIceCandidate
self
  = DOM (Maybe result) -> m (Maybe result)
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((RTCIceCandidate
self RTCIceCandidate
-> Getting (JSM JSVal) RTCIceCandidate (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter RTCIceCandidate (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"sdpMid") JSM JSVal -> (JSVal -> DOM (Maybe result)) -> DOM (Maybe result)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM (Maybe result)
forall a. FromJSString a => JSVal -> JSM (Maybe a)
fromMaybeJSString)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate.sdpMid Mozilla RTCIceCandidate.sdpMid documentation> 
getSdpMidUnsafe ::
                (MonadDOM m, HasCallStack, FromJSString result) =>
                  RTCIceCandidate -> m result
getSdpMidUnsafe :: RTCIceCandidate -> m result
getSdpMidUnsafe RTCIceCandidate
self
  = DOM result -> m result
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((RTCIceCandidate
self RTCIceCandidate
-> Getting (JSM JSVal) RTCIceCandidate (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter RTCIceCandidate (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"sdpMid") JSM JSVal -> (JSVal -> JSM (Maybe result)) -> JSM (Maybe result)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM (Maybe result)
forall a. FromJSString a => JSVal -> JSM (Maybe a)
fromMaybeJSString) JSM (Maybe result) -> (Maybe result -> DOM result) -> DOM result
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
         DOM result -> (result -> DOM result) -> Maybe result -> DOM result
forall b a. b -> (a -> b) -> Maybe a -> b
maybe ([Char] -> DOM result
forall a. HasCallStack => [Char] -> a
Prelude.error [Char]
"Nothing to return") result -> DOM result
forall (m :: * -> *) a. Monad m => a -> m a
return)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate.sdpMid Mozilla RTCIceCandidate.sdpMid documentation> 
getSdpMidUnchecked ::
                   (MonadDOM m, FromJSString result) => RTCIceCandidate -> m result
getSdpMidUnchecked :: RTCIceCandidate -> m result
getSdpMidUnchecked RTCIceCandidate
self
  = DOM result -> m result
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((RTCIceCandidate
self RTCIceCandidate
-> Getting (JSM JSVal) RTCIceCandidate (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter RTCIceCandidate (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"sdpMid") JSM JSVal -> (JSVal -> DOM result) -> DOM result
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM result
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate.sdpMLineIndex Mozilla RTCIceCandidate.sdpMLineIndex documentation> 
getSdpMLineIndex ::
                 (MonadDOM m) => RTCIceCandidate -> m (Maybe Word)
getSdpMLineIndex :: RTCIceCandidate -> m (Maybe Word)
getSdpMLineIndex RTCIceCandidate
self
  = DOM (Maybe Word) -> m (Maybe Word)
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((RTCIceCandidate
self RTCIceCandidate
-> Getting (JSM JSVal) RTCIceCandidate (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter RTCIceCandidate (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"sdpMLineIndex") JSM JSVal -> (JSVal -> DOM (Maybe Word)) -> DOM (Maybe Word)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM (Maybe Word)
forall a. FromJSVal a => JSVal -> JSM (Maybe a)
fromJSVal)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate.sdpMLineIndex Mozilla RTCIceCandidate.sdpMLineIndex documentation> 
getSdpMLineIndexUnsafe ::
                       (MonadDOM m, HasCallStack) => RTCIceCandidate -> m Word
getSdpMLineIndexUnsafe :: RTCIceCandidate -> m Word
getSdpMLineIndexUnsafe RTCIceCandidate
self
  = DOM Word -> m Word
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((RTCIceCandidate
self RTCIceCandidate
-> Getting (JSM JSVal) RTCIceCandidate (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter RTCIceCandidate (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"sdpMLineIndex") JSM JSVal -> (JSVal -> DOM (Maybe Word)) -> DOM (Maybe Word)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM (Maybe Word)
forall a. FromJSVal a => JSVal -> JSM (Maybe a)
fromJSVal) DOM (Maybe Word) -> (Maybe Word -> DOM Word) -> DOM Word
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
         DOM Word -> (Word -> DOM Word) -> Maybe Word -> DOM Word
forall b a. b -> (a -> b) -> Maybe a -> b
maybe ([Char] -> DOM Word
forall a. HasCallStack => [Char] -> a
Prelude.error [Char]
"Nothing to return") Word -> DOM Word
forall (m :: * -> *) a. Monad m => a -> m a
return)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate.sdpMLineIndex Mozilla RTCIceCandidate.sdpMLineIndex documentation> 
getSdpMLineIndexUnchecked ::
                          (MonadDOM m) => RTCIceCandidate -> m Word
getSdpMLineIndexUnchecked :: RTCIceCandidate -> m Word
getSdpMLineIndexUnchecked RTCIceCandidate
self
  = DOM Word -> m Word
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((RTCIceCandidate
self RTCIceCandidate
-> Getting (JSM JSVal) RTCIceCandidate (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter RTCIceCandidate (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"sdpMLineIndex") JSM JSVal -> (JSVal -> DOM Word) -> DOM Word
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM Word
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)