packages feed

jsaddle-dom-0.10.0.0: src/JSDOM/Generated/WebSocket.hs

{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-- | Generated by dom-gen from websockets (webref). Do not edit.
module JSDOM.Generated.WebSocket
       (newWebSocket, close, send, getUrl, getReadyState, getBufferedAmount, getExtensions, getProtocol, setBinaryType, getBinaryType, pattern CONNECTING, pattern OPEN, pattern CLOSING, pattern CLOSED, open, error, closeEvent, message, WebSocket(..), gTypeWebSocket)
       where
import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
import qualified Prelude as P
import Control.Monad (void)
import Control.Lens.Operators ((^.))
import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
import JSDOM.Types
import qualified JSDOM.Types as Types
import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
import JSDOM.Generated.Enums

-- | <https://developer.mozilla.org/docs/Web/API/WebSocket/WebSocket MDN WebSocket. documentation>
newWebSocket :: (MonadDOM m, ToJSString url, IsStringOrSequenceString protocols) => url -> Maybe protocols -> m WebSocket
newWebSocket url protocols = liftDOM (((new (jsg "WebSocket") [toJSVal url, P.maybe (P.return jsUndefined) toJSVal protocols]) >>= fromJSValUnchecked))

-- | <https://developer.mozilla.org/docs/Web/API/WebSocket/close MDN WebSocket.close documentation>
close :: (MonadDOM m, ToJSString reason) => WebSocket -> Maybe Word -> Maybe reason -> m ()
close self code reason = liftDOM (void (self ^. jsf "close" [P.maybe (P.return jsUndefined) toJSVal code, P.maybe (P.return jsUndefined) toJSVal reason]))

-- | <https://developer.mozilla.org/docs/Web/API/WebSocket/send MDN WebSocket.send documentation>
send :: (MonadDOM m, IsBlobPart data') => WebSocket -> data' -> m ()
send self data' = liftDOM (void (self ^. jsf "send" [toJSVal data']))

-- | <https://developer.mozilla.org/docs/Web/API/WebSocket/url MDN WebSocket.url documentation>
getUrl :: (MonadDOM m, FromJSString result) => WebSocket -> m result
getUrl self = liftDOM (((self ^. js "url") >>= fromJSValUnchecked))

-- | <https://developer.mozilla.org/docs/Web/API/WebSocket/readyState MDN WebSocket.readyState documentation>
getReadyState :: (MonadDOM m) => WebSocket -> m Word
getReadyState self = liftDOM ((P.round <$> ((self ^. js "readyState") >>= valToNumber)))

-- | <https://developer.mozilla.org/docs/Web/API/WebSocket/bufferedAmount MDN WebSocket.bufferedAmount documentation>
getBufferedAmount :: (MonadDOM m) => WebSocket -> m Word53
getBufferedAmount self = liftDOM (((self ^. js "bufferedAmount") >>= fromJSValUnchecked))

-- | <https://developer.mozilla.org/docs/Web/API/WebSocket/extensions MDN WebSocket.extensions documentation>
getExtensions :: (MonadDOM m, FromJSString result) => WebSocket -> m result
getExtensions self = liftDOM (((self ^. js "extensions") >>= fromJSValUnchecked))

-- | <https://developer.mozilla.org/docs/Web/API/WebSocket/protocol MDN WebSocket.protocol documentation>
getProtocol :: (MonadDOM m, FromJSString result) => WebSocket -> m result
getProtocol self = liftDOM (((self ^. js "protocol") >>= fromJSValUnchecked))

-- | <https://developer.mozilla.org/docs/Web/API/WebSocket/binaryType MDN WebSocket.binaryType documentation>
setBinaryType :: (MonadDOM m) => WebSocket -> BinaryType -> m ()
setBinaryType self val = liftDOM (void (self ^. jss "binaryType" (toJSVal val)))

-- | <https://developer.mozilla.org/docs/Web/API/WebSocket/binaryType MDN WebSocket.binaryType documentation>
getBinaryType :: (MonadDOM m) => WebSocket -> m BinaryType
getBinaryType self = liftDOM (((self ^. js "binaryType") >>= fromJSValUnchecked))

pattern CONNECTING = 0

pattern OPEN = 1

pattern CLOSING = 2

pattern CLOSED = 3

-- | <https://websockets.spec.whatwg.org/#dom-websocket-onopen open event>
open :: EventName WebSocket Event
open = unsafeEventNameAsync (toJSString "open")

-- | <https://websockets.spec.whatwg.org/#dom-websocket-onerror error event>
error :: EventName WebSocket Event
error = unsafeEventNameAsync (toJSString "error")

-- | <https://websockets.spec.whatwg.org/#dom-websocket-onclose close event>
closeEvent :: EventName WebSocket CloseEvent
closeEvent = unsafeEventNameAsync (toJSString "close")

-- | <https://websockets.spec.whatwg.org/#dom-websocket-onmessage message event>
message :: EventName WebSocket MessageEvent
message = unsafeEventNameAsync (toJSString "message")