elm/libraries/Http.elm

55 lines
1.4 KiB
Elm
Raw Permalink Normal View History

2013-09-12 19:52:48 +00:00
module Http where
2014-03-24 00:21:44 +00:00
{-| A library for asynchronous HTTP requests. See the `WebSocket`
library if you have very strict latency requirements.
2013-09-10 03:14:58 +00:00
2013-09-10 06:07:49 +00:00
# Sending Requests
@docs send, sendGet
2013-09-10 03:14:58 +00:00
2013-09-10 06:07:49 +00:00
# Creating Requests
@docs get, post, request
# Responses
@docs Response
2013-09-10 03:14:58 +00:00
-}
import Signal (..)
import Native.Http
2013-09-10 03:14:58 +00:00
{-| The datatype for responses. Success contains only the returned message.
Failures contain both an error code and an error message.
-}
data Response a = Success a | Waiting | Failure Int String
type Request a = {
verb : String,
url : String,
body : a,
headers : [(String,String)]
2013-03-10 08:54:37 +00:00
}
2013-09-10 03:14:58 +00:00
{-| Create a customized request. Arguments are request type (get, post, put,
delete, etc.), target url, data, and a list of additional headers.
-}
request : String -> String -> String -> [(String,String)] -> Request String
request = Request
2013-09-10 03:14:58 +00:00
{-| Create a GET request to the given url. -}
get : String -> Request String
get url = Request "GET" url "" []
2013-09-10 03:14:58 +00:00
{-| Create a POST request to the given url, carrying the given data. -}
post : String -> String -> Request String
post url body = Request "POST" url body []
2013-09-10 03:14:58 +00:00
{-| Performs an HTTP request with the given requests. Produces a signal
that carries the responses.
-}
send : Signal (Request a) -> Signal (Response String)
send = Native.Http.send
2013-09-10 03:14:58 +00:00
{-| Performs an HTTP GET request with the given urls. Produces a signal
that carries the responses.
-}
sendGet : Signal String -> Signal (Response String)
2013-03-10 08:54:37 +00:00
sendGet reqs = send (lift get reqs)