{-# LANGUAGE PatternSynonyms #-} module Language.Javascript.JSaddle.DOM.Generated.WebSocket (newWebSocket, newWebSocket', send, sendView, sendBlob, sendString, close, pattern CONNECTING, pattern OPEN, pattern CLOSING, pattern CLOSED, getUrl, getReadyState, getBufferedAmount, open, message, error, closeEvent, getProtocol, getExtensions, setBinaryType, getBinaryType, WebSocket, castToWebSocket, gTypeWebSocket) where import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..)) import Data.Typeable (Typeable) import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array) import Data.Int (Int64) import Data.Word (Word, Word64) import Language.Javascript.JSaddle.DOM.Types import Control.Applicative ((<$>)) import Control.Monad (void) import Control.Lens.Operators ((^.)) import Language.Javascript.JSaddle.DOM.EventTargetClosures (EventName, unsafeEventName) import Language.Javascript.JSaddle.DOM.Enums -- | newWebSocket :: (MonadDOM m, ToJSString url, ToJSString protocols) => url -> Maybe [protocols] -> m WebSocket newWebSocket url protocols = liftDOM (WebSocket <$> new (jsg "WebSocket") [toJSVal url, toJSVal (fmap array protocols)]) -- | newWebSocket' :: (MonadDOM m, ToJSString url, ToJSString protocol) => url -> protocol -> m WebSocket newWebSocket' url protocol = liftDOM (WebSocket <$> new (jsg "WebSocket") [toJSVal url, toJSVal protocol]) -- | send :: (MonadDOM m, IsArrayBuffer data') => WebSocket -> Maybe data' -> m () send self data' = liftDOM (void (self ^. jsf "send" [toJSVal data'])) -- | sendView :: (MonadDOM m, IsArrayBufferView data') => WebSocket -> Maybe data' -> m () sendView self data' = liftDOM (void (self ^. jsf "send" [toJSVal data'])) -- | sendBlob :: (MonadDOM m, IsBlob data') => WebSocket -> Maybe data' -> m () sendBlob self data' = liftDOM (void (self ^. jsf "send" [toJSVal data'])) -- | sendString :: (MonadDOM m, ToJSString data') => WebSocket -> data' -> m () sendString self data' = liftDOM (void (self ^. jsf "send" [toJSVal data'])) -- | close :: (MonadDOM m, ToJSString reason) => WebSocket -> Word -> reason -> m () close self code reason = liftDOM (void (self ^. jsf "close" [toJSVal code, toJSVal reason])) pattern CONNECTING = 0 pattern OPEN = 1 pattern CLOSING = 2 pattern CLOSED = 3 -- | getUrl :: (MonadDOM m, FromJSString result) => WebSocket -> m result getUrl self = liftDOM ((self ^. js "url") >>= fromJSValUnchecked) -- | getReadyState :: (MonadDOM m) => WebSocket -> m Word getReadyState self = liftDOM (round <$> ((self ^. js "readyState") >>= valToNumber)) -- | getBufferedAmount :: (MonadDOM m) => WebSocket -> m Word getBufferedAmount self = liftDOM (round <$> ((self ^. js "bufferedAmount") >>= valToNumber)) -- | 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 Event closeEvent = unsafeEventName (toJSString "close") -- | getProtocol :: (MonadDOM m, FromJSString result) => WebSocket -> m (Maybe result) getProtocol self = liftDOM ((self ^. js "protocol") >>= fromMaybeJSString) -- | getExtensions :: (MonadDOM m, FromJSString result) => WebSocket -> m (Maybe result) getExtensions self = liftDOM ((self ^. js "extensions") >>= fromMaybeJSString) -- | setBinaryType :: (MonadDOM m, ToJSString val) => WebSocket -> val -> m () setBinaryType self val = liftDOM (self ^. jss "binaryType" (toJSVal val)) -- | getBinaryType :: (MonadDOM m, FromJSString result) => WebSocket -> m result getBinaryType self = liftDOM ((self ^. js "binaryType") >>= fromJSValUnchecked)