{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.CryptoKey
       (getType, getExtractable, getAlgorithm, getUsages, CryptoKey(..),
        gTypeCryptoKey)
       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/CryptoKey.type Mozilla CryptoKey.type documentation> 
getType :: (MonadDOM m) => CryptoKey -> m KeyType
getType :: forall (m :: * -> *). MonadDOM m => CryptoKey -> m KeyType
getType CryptoKey
self = DOM KeyType -> m KeyType
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((CryptoKey
self CryptoKey -> Getting (JSM JSVal) CryptoKey (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter CryptoKey (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"type") JSM JSVal -> (JSVal -> DOM KeyType) -> DOM KeyType
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM KeyType
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/CryptoKey.extractable Mozilla CryptoKey.extractable documentation> 
getExtractable :: (MonadDOM m) => CryptoKey -> m Bool
getExtractable :: forall (m :: * -> *). MonadDOM m => CryptoKey -> m Bool
getExtractable CryptoKey
self
  = DOM Bool -> m Bool
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((CryptoKey
self CryptoKey -> Getting (JSM JSVal) CryptoKey (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter CryptoKey (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"extractable") JSM JSVal -> (JSVal -> DOM Bool) -> DOM Bool
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM Bool
forall value. ToJSVal value => value -> DOM Bool
valToBool)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/CryptoKey.algorithm Mozilla CryptoKey.algorithm documentation> 
getAlgorithm :: (MonadDOM m) => CryptoKey -> m GObject
getAlgorithm :: forall (m :: * -> *). MonadDOM m => CryptoKey -> m GObject
getAlgorithm CryptoKey
self
  = DOM GObject -> m GObject
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((CryptoKey
self CryptoKey -> Getting (JSM JSVal) CryptoKey (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter CryptoKey (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"algorithm") JSM JSVal -> (JSVal -> DOM GObject) -> DOM GObject
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM GObject
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/CryptoKey.usages Mozilla CryptoKey.usages documentation> 
getUsages :: (MonadDOM m) => CryptoKey -> m [CryptoKeyUsage]
getUsages :: forall (m :: * -> *). MonadDOM m => CryptoKey -> m [CryptoKeyUsage]
getUsages CryptoKey
self
  = DOM [CryptoKeyUsage] -> m [CryptoKeyUsage]
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((CryptoKey
self CryptoKey -> Getting (JSM JSVal) CryptoKey (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter CryptoKey (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"usages") JSM JSVal
-> (JSVal -> DOM [CryptoKeyUsage]) -> DOM [CryptoKeyUsage]
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM [CryptoKeyUsage]
forall o. FromJSVal o => JSVal -> JSM [o]
fromJSArrayUnchecked)