{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.RTCSessionDescription
       (newRTCSessionDescription, getType, getSdp,
        RTCSessionDescription(..), gTypeRTCSessionDescription)
       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/RTCSessionDescription Mozilla RTCSessionDescription documentation> 
newRTCSessionDescription ::
                         (MonadDOM m) =>
                           RTCSessionDescriptionInit -> m RTCSessionDescription
newRTCSessionDescription :: RTCSessionDescriptionInit -> m RTCSessionDescription
newRTCSessionDescription RTCSessionDescriptionInit
descriptionInitDict
  = DOM RTCSessionDescription -> m RTCSessionDescription
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSVal -> RTCSessionDescription
RTCSessionDescription (JSVal -> RTCSessionDescription)
-> JSM JSVal -> DOM RTCSessionDescription
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]
"RTCSessionDescription") [RTCSessionDescriptionInit -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal RTCSessionDescriptionInit
descriptionInitDict])

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

-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCSessionDescription.sdp Mozilla RTCSessionDescription.sdp documentation> 
getSdp ::
       (MonadDOM m, FromJSString result) =>
         RTCSessionDescription -> m result
getSdp :: RTCSessionDescription -> m result
getSdp RTCSessionDescription
self = DOM result -> m result
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((RTCSessionDescription
self RTCSessionDescription
-> Getting (JSM JSVal) RTCSessionDescription (JSM JSVal)
-> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter RTCSessionDescription (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"sdp") 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)