module Miso.Fetch
( fetch
) where
import Data.Aeson (FromJSON)
import qualified Miso.FFI.Internal as FFI
import Miso.Effect (Effect, withSink)
import Miso.String (MisoString)
fetch
:: FromJSON result
=> MisoString
-> MisoString
-> Maybe MisoString
-> [(MisoString,MisoString)]
-> (result -> action)
-> (MisoString -> action)
-> Effect model action
fetch :: forall result action model.
FromJSON result =>
MisoString
-> MisoString
-> Maybe MisoString
-> [(MisoString, MisoString)]
-> (result -> action)
-> (MisoString -> action)
-> Effect model action
fetch MisoString
url MisoString
method Maybe MisoString
body [(MisoString, MisoString)]
headers result -> action
successful MisoString -> action
errorful =
(Sink action -> JSM ()) -> Effect model action
forall action model. (Sink action -> JSM ()) -> Effect model action
withSink ((Sink action -> JSM ()) -> Effect model action)
-> (Sink action -> JSM ()) -> Effect model action
forall a b. (a -> b) -> a -> b
$ \Sink action
sink ->
MisoString
-> MisoString
-> Maybe MisoString
-> [(MisoString, MisoString)]
-> (result -> JSM ())
-> (MisoString -> JSM ())
-> JSM ()
forall action.
FromJSON action =>
MisoString
-> MisoString
-> Maybe MisoString
-> [(MisoString, MisoString)]
-> (action -> JSM ())
-> (MisoString -> JSM ())
-> JSM ()
FFI.fetch MisoString
url MisoString
method Maybe MisoString
body [(MisoString, MisoString)]
headers (Sink action
sink Sink action -> (result -> action) -> result -> JSM ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. result -> action
successful) (Sink action
sink Sink action -> (MisoString -> action) -> MisoString -> JSM ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. MisoString -> action
errorful)