{-# LANGUAGE PatternSynonyms #-} {-# LANGUAGE ForeignFunctionInterface #-} {-# LANGUAGE JavaScriptFFI #-} -- For HasCallStack compatibility {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-} module GHCJS.DOM.JSFFI.Generated.WebSocket (js_newWebSocket, newWebSocket, js_newWebSocket', newWebSocket', js_send, send, js_sendView, sendView, js_sendBlob, sendBlob, js_sendString, sendString, js_close, close, pattern CONNECTING, pattern OPEN, pattern CLOSING, pattern CLOSED, js_getUrl, getUrl, js_getReadyState, getReadyState, js_getBufferedAmount, getBufferedAmount, open, message, error, closeEvent, js_getProtocol, getProtocol, getProtocolUnsafe, getProtocolUnchecked, js_getExtensions, getExtensions, getExtensionsUnsafe, getExtensionsUnchecked, js_setBinaryType, setBinaryType, js_getBinaryType, getBinaryType, WebSocket(..), gTypeWebSocket) where import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord) import qualified Prelude (error) import Data.Typeable (Typeable) import GHCJS.Types (JSVal(..), JSString) import GHCJS.Foreign (jsNull) import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..)) import GHCJS.Marshal (ToJSVal(..), FromJSVal(..)) import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..)) import Control.Monad (void) import Control.Monad.IO.Class (MonadIO(..)) import Data.Int (Int64) import Data.Word (Word, Word64) import Data.Maybe (fromJust) import GHCJS.DOM.Types import Control.Applicative ((<$>)) import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName) import GHCJS.DOM.JSFFI.Generated.Enums foreign import javascript unsafe "new window[\"WebSocket\"]($1, $2)" js_newWebSocket :: JSString -> JSVal -> IO WebSocket -- | newWebSocket :: (MonadIO m, ToJSString url, ToJSString protocols) => url -> Maybe [protocols] -> m WebSocket newWebSocket url protocols = liftIO (toJSVal protocols >>= \ protocols' -> js_newWebSocket (toJSString url) protocols') foreign import javascript unsafe "new window[\"WebSocket\"]($1, $2)" js_newWebSocket' :: JSString -> JSString -> IO WebSocket -- | newWebSocket' :: (MonadIO m, ToJSString url, ToJSString protocol) => url -> protocol -> m WebSocket newWebSocket' url protocol = liftIO (js_newWebSocket' (toJSString url) (toJSString protocol)) foreign import javascript unsafe "$1[\"send\"]($2)" js_send :: WebSocket -> Nullable ArrayBuffer -> IO () -- | send :: (MonadIO m, IsArrayBuffer data') => WebSocket -> Maybe data' -> m () send self data' = liftIO (js_send (self) (maybeToNullable (fmap toArrayBuffer data'))) foreign import javascript unsafe "$1[\"send\"]($2)" js_sendView :: WebSocket -> Nullable ArrayBufferView -> IO () -- | sendView :: (MonadIO m, IsArrayBufferView data') => WebSocket -> Maybe data' -> m () sendView self data' = liftIO (js_sendView (self) (maybeToNullable (fmap toArrayBufferView data'))) foreign import javascript unsafe "$1[\"send\"]($2)" js_sendBlob :: WebSocket -> Nullable Blob -> IO () -- | sendBlob :: (MonadIO m, IsBlob data') => WebSocket -> Maybe data' -> m () sendBlob self data' = liftIO (js_sendBlob (self) (maybeToNullable (fmap toBlob data'))) foreign import javascript unsafe "$1[\"send\"]($2)" js_sendString :: WebSocket -> JSString -> IO () -- | sendString :: (MonadIO m, ToJSString data') => WebSocket -> data' -> m () sendString self data' = liftIO (js_sendString (self) (toJSString data')) foreign import javascript unsafe "$1[\"close\"]($2, $3)" js_close :: WebSocket -> Word -> JSString -> IO () -- | close :: (MonadIO m, ToJSString reason) => WebSocket -> Word -> reason -> m () close self code reason = liftIO (js_close (self) code (toJSString reason)) pattern CONNECTING = 0 pattern OPEN = 1 pattern CLOSING = 2 pattern CLOSED = 3 foreign import javascript unsafe "$1[\"url\"]" js_getUrl :: WebSocket -> IO JSString -- | getUrl :: (MonadIO m, FromJSString result) => WebSocket -> m result getUrl self = liftIO (fromJSString <$> (js_getUrl (self))) foreign import javascript unsafe "$1[\"readyState\"]" js_getReadyState :: WebSocket -> IO Word -- | getReadyState :: (MonadIO m) => WebSocket -> m Word getReadyState self = liftIO (js_getReadyState (self)) foreign import javascript unsafe "$1[\"bufferedAmount\"]" js_getBufferedAmount :: WebSocket -> IO Word -- | getBufferedAmount :: (MonadIO m) => WebSocket -> m Word getBufferedAmount self = liftIO (js_getBufferedAmount (self)) -- | open :: EventName WebSocket Event open = unsafeEventName (toJSString "open") -- | message :: EventName WebSocket MessageEvent message = unsafeEventName (toJSString "message") -- | error :: EventName WebSocket UIEvent error = unsafeEventName (toJSString "error") -- | closeEvent :: EventName WebSocket CloseEvent closeEvent = unsafeEventName (toJSString "close") foreign import javascript unsafe "$1[\"protocol\"]" js_getProtocol :: WebSocket -> IO (Nullable JSString) -- | getProtocol :: (MonadIO m, FromJSString result) => WebSocket -> m (Maybe result) getProtocol self = liftIO (fromMaybeJSString <$> (js_getProtocol (self))) -- | getProtocolUnsafe :: (MonadIO m, HasCallStack, FromJSString result) => WebSocket -> m result getProtocolUnsafe self = liftIO ((fromMaybeJSString <$> (js_getProtocol (self))) >>= maybe (Prelude.error "Nothing to return") return) -- | getProtocolUnchecked :: (MonadIO m, FromJSString result) => WebSocket -> m result getProtocolUnchecked self = liftIO (fromJust . fromMaybeJSString <$> (js_getProtocol (self))) foreign import javascript unsafe "$1[\"extensions\"]" js_getExtensions :: WebSocket -> IO (Nullable JSString) -- | getExtensions :: (MonadIO m, FromJSString result) => WebSocket -> m (Maybe result) getExtensions self = liftIO (fromMaybeJSString <$> (js_getExtensions (self))) -- | getExtensionsUnsafe :: (MonadIO m, HasCallStack, FromJSString result) => WebSocket -> m result getExtensionsUnsafe self = liftIO ((fromMaybeJSString <$> (js_getExtensions (self))) >>= maybe (Prelude.error "Nothing to return") return) -- | getExtensionsUnchecked :: (MonadIO m, FromJSString result) => WebSocket -> m result getExtensionsUnchecked self = liftIO (fromJust . fromMaybeJSString <$> (js_getExtensions (self))) foreign import javascript unsafe "$1[\"binaryType\"] = $2;" js_setBinaryType :: WebSocket -> JSString -> IO () -- | setBinaryType :: (MonadIO m, ToJSString val) => WebSocket -> val -> m () setBinaryType self val = liftIO (js_setBinaryType (self) (toJSString val)) foreign import javascript unsafe "$1[\"binaryType\"]" js_getBinaryType :: WebSocket -> IO JSString -- | getBinaryType :: (MonadIO m, FromJSString result) => WebSocket -> m result getBinaryType self = liftIO (fromJSString <$> (js_getBinaryType (self)))