elm/core/HTTP.elm
evancz d53cecf3ba List module dependencies in elm and js code.
Planning on having the compiler crawl through to determine dependencies, then compile everything in an appropriate order. This will also let me print out compiler progress in a reasonable order.
2013-02-23 00:19:40 +01:00

43 lines
1.3 KiB
Elm

-- A library for asynchronous HTTP requests (AJAX). See the
-- [WebSocket](http://elm-lang.org/docs/WebSocket.elm) library if
-- you have very strict latency requirements.
module HTTP where
import Native.HTTP
-- 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)]
}
-- 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
-- Create a GET request to the given url.
get : String -> Request String
get url = Request "GET" url "" []
-- Create a POST request to the given url, carrying the given data.
post : String -> String -> Request String
post url body = Request "POST" url body []
-- 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
-- Performs an HTTP GET request with the given urls. Produces a signal
-- that carries the responses.
sendGet : Signal String -> Signal (Response String)
sendGet = send . lift get