packages feed

ghcjs-dom-jsffi-0.3.1.0: src/GHCJS/DOM/JSFFI/FormData.hs

{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
module GHCJS.DOM.JSFFI.FormData (
    module Generated
  , js_append
  , js_append3
  , append
  , appendBlob
) where

import Control.Monad.IO.Class (MonadIO(..))

import GHCJS.Types (JSVal, JSString)
import GHCJS.Marshal.Internal (PToJSVal(..))
import GHCJS.DOM.Types

import GHCJS.DOM.JSFFI.Generated.FormData as Generated hiding (js_append, append)

foreign import javascript unsafe "$1[\"append\"]($2, $3)"
        js_append :: FormData -> JSString -> JSVal -> IO ()

foreign import javascript unsafe "$1[\"append\"]($2, $3, $4)"
        js_append3 :: FormData -> JSString -> JSVal -> JSString -> IO ()

-- | <https://developer.mozilla.org/en-US/docs/Web/API/FormData/append Mozilla FormData.append documentation>
append
  :: (MonadIO m, ToJSString name, ToJSString str)
  => FormData -> name -> str -> m ()
append self name str
  = liftIO $ js_append self (toJSString name) (pToJSVal str)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/FormData/append Mozilla FormData.append documentation>
appendBlob
  :: (MonadIO m, ToJSString name, IsBlob blob, ToJSString filename)
  => FormData -> name -> blob -> Maybe filename -> m ()
appendBlob self name blob mfilename
  = let jsname = toJSString name
        jsblob = unBlob $ toBlob blob
    in liftIO $ case mfilename of
         Just filename -> js_append3 self jsname jsblob $ toJSString filename
         Nothing -> js_append self jsname jsblob