{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.Request
       (newRequest, clone, clone_, getMethod, getUrl, getHeaders, getType,
        getDestination, getReferrer, getReferrerPolicy, getMode,
        getCredentials, getCache, getRedirect, getIntegrity, Request(..),
        gTypeRequest)
       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/Request Mozilla Request documentation> 
newRequest ::
           (MonadDOM m, ToJSVal input) =>
             input -> Maybe RequestInit -> m Request
newRequest :: forall (m :: * -> *) input.
(MonadDOM m, ToJSVal input) =>
input -> Maybe RequestInit -> m Request
newRequest input
input Maybe RequestInit
init
  = DOM Request -> m Request
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSVal -> Request
Request (JSVal -> Request) -> JSM JSVal -> DOM Request
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 (String -> JSM JSVal
forall a. ToJSString a => a -> JSM JSVal
jsg String
"Request") [input -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal input
input, Maybe RequestInit -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe RequestInit
init])

-- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.clone Mozilla Request.clone documentation> 
clone :: (MonadDOM m) => Request -> m Request
clone :: forall (m :: * -> *). MonadDOM m => Request -> m Request
clone Request
self
  = DOM Request -> m Request
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((Request
self Request -> Getting (JSM JSVal) Request (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"clone" ()) JSM JSVal -> (JSVal -> DOM Request) -> DOM Request
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 Request
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.clone Mozilla Request.clone documentation> 
clone_ :: (MonadDOM m) => Request -> m ()
clone_ :: forall (m :: * -> *). MonadDOM m => Request -> m ()
clone_ Request
self = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (Request
self Request -> Getting (JSM JSVal) Request (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"clone" ()))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.method Mozilla Request.method documentation> 
getMethod ::
          (MonadDOM m, FromJSString result) => Request -> m result
getMethod :: forall (m :: * -> *) result.
(MonadDOM m, FromJSString result) =>
Request -> m result
getMethod Request
self
  = DOM result -> m result
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((Request
self Request -> Getting (JSM JSVal) Request (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter Request (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"method") JSM JSVal -> (JSVal -> DOM result) -> DOM result
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 result
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.url Mozilla Request.url documentation> 
getUrl :: (MonadDOM m, FromJSString result) => Request -> m result
getUrl :: forall (m :: * -> *) result.
(MonadDOM m, FromJSString result) =>
Request -> m result
getUrl Request
self = DOM result -> m result
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((Request
self Request -> Getting (JSM JSVal) Request (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter Request (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"url") JSM JSVal -> (JSVal -> DOM result) -> DOM result
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 result
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.headers Mozilla Request.headers documentation> 
getHeaders :: (MonadDOM m) => Request -> m Headers
getHeaders :: forall (m :: * -> *). MonadDOM m => Request -> m Headers
getHeaders Request
self
  = DOM Headers -> m Headers
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((Request
self Request -> Getting (JSM JSVal) Request (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter Request (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"headers") JSM JSVal -> (JSVal -> DOM Headers) -> DOM Headers
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 Headers
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.type Mozilla Request.type documentation> 
getType :: (MonadDOM m) => Request -> m RequestType
getType :: forall (m :: * -> *). MonadDOM m => Request -> m RequestType
getType Request
self = DOM RequestType -> m RequestType
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((Request
self Request -> Getting (JSM JSVal) Request (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter Request (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"type") JSM JSVal -> (JSVal -> DOM RequestType) -> DOM RequestType
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 RequestType
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.destination Mozilla Request.destination documentation> 
getDestination :: (MonadDOM m) => Request -> m RequestDestination
getDestination :: forall (m :: * -> *). MonadDOM m => Request -> m RequestDestination
getDestination Request
self
  = DOM RequestDestination -> m RequestDestination
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((Request
self Request -> Getting (JSM JSVal) Request (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter Request (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"destination") JSM JSVal
-> (JSVal -> DOM RequestDestination) -> DOM RequestDestination
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 RequestDestination
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.referrer Mozilla Request.referrer documentation> 
getReferrer ::
            (MonadDOM m, FromJSString result) => Request -> m result
getReferrer :: forall (m :: * -> *) result.
(MonadDOM m, FromJSString result) =>
Request -> m result
getReferrer Request
self
  = DOM result -> m result
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((Request
self Request -> Getting (JSM JSVal) Request (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter Request (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"referrer") JSM JSVal -> (JSVal -> DOM result) -> DOM result
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 result
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.referrerPolicy Mozilla Request.referrerPolicy documentation> 
getReferrerPolicy :: (MonadDOM m) => Request -> m ReferrerPolicy
getReferrerPolicy :: forall (m :: * -> *). MonadDOM m => Request -> m ReferrerPolicy
getReferrerPolicy Request
self
  = DOM ReferrerPolicy -> m ReferrerPolicy
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((Request
self Request -> Getting (JSM JSVal) Request (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter Request (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"referrerPolicy") JSM JSVal -> (JSVal -> DOM ReferrerPolicy) -> DOM ReferrerPolicy
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 ReferrerPolicy
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.mode Mozilla Request.mode documentation> 
getMode :: (MonadDOM m) => Request -> m RequestMode
getMode :: forall (m :: * -> *). MonadDOM m => Request -> m RequestMode
getMode Request
self = DOM RequestMode -> m RequestMode
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((Request
self Request -> Getting (JSM JSVal) Request (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter Request (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"mode") JSM JSVal -> (JSVal -> DOM RequestMode) -> DOM RequestMode
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 RequestMode
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.credentials Mozilla Request.credentials documentation> 
getCredentials :: (MonadDOM m) => Request -> m RequestCredentials
getCredentials :: forall (m :: * -> *). MonadDOM m => Request -> m RequestCredentials
getCredentials Request
self
  = DOM RequestCredentials -> m RequestCredentials
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((Request
self Request -> Getting (JSM JSVal) Request (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter Request (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"credentials") JSM JSVal
-> (JSVal -> DOM RequestCredentials) -> DOM RequestCredentials
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 RequestCredentials
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.cache Mozilla Request.cache documentation> 
getCache :: (MonadDOM m) => Request -> m RequestCache
getCache :: forall (m :: * -> *). MonadDOM m => Request -> m RequestCache
getCache Request
self
  = DOM RequestCache -> m RequestCache
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((Request
self Request -> Getting (JSM JSVal) Request (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter Request (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"cache") JSM JSVal -> (JSVal -> DOM RequestCache) -> DOM RequestCache
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 RequestCache
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.redirect Mozilla Request.redirect documentation> 
getRedirect :: (MonadDOM m) => Request -> m RequestRedirect
getRedirect :: forall (m :: * -> *). MonadDOM m => Request -> m RequestRedirect
getRedirect Request
self
  = DOM RequestRedirect -> m RequestRedirect
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((Request
self Request -> Getting (JSM JSVal) Request (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter Request (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"redirect") JSM JSVal -> (JSVal -> DOM RequestRedirect) -> DOM RequestRedirect
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 RequestRedirect
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.integrity Mozilla Request.integrity documentation> 
getIntegrity ::
             (MonadDOM m, FromJSString result) => Request -> m result
getIntegrity :: forall (m :: * -> *) result.
(MonadDOM m, FromJSString result) =>
Request -> m result
getIntegrity Request
self
  = DOM result -> m result
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((Request
self Request -> Getting (JSM JSVal) Request (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter Request (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"integrity") JSM JSVal -> (JSVal -> DOM result) -> DOM result
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 result
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)