EngageSoftware/elm-dnn-http/2.1.0

NOTE: the latest version is 2.3.1

Engage.Http

Helpers for working with DNN Web API

Types

type alias Config =
{ baseUrl : String
, headers : List Header
}

Configuration type

  • baseUrl the base URL for the HTTP requests
  • headers: list of the headers for the HTTP requests
type Error
= BadUrl String
| Timeout
| NetworkError
| BadStatus Int String
| BadBody String

When a request fails, the Failure value will be one of these. Most of these are copied from Http.Error in the elm/http module.

When there is a BadStatus, both the status code and the body of the response are included. This allows getErrorMessage to retrieve any error message in the response, if they are available.

HTTP Verbs

get :
Config
-> (RemoteData Error success -> msg)
-> Decoder success
-> { methodName : String
, queryStringParams : List ( String, String )
}
-> Cmd msg

HTTP GET

Config
-> (RemoteData Error success -> msg)
-> Decoder success
-> { methodName : String
, value : Value
}
-> Cmd msg

HTTP POST

Config
-> (RemoteData Error success -> msg)
-> Decoder success
-> { methodName : String
, value : Value
}
-> Cmd msg

HTTP PATCH

put :
Config
-> (RemoteData Error success -> msg)
-> Decoder success
-> { methodName : String
, value : Value
}
-> Cmd msg

HTTP PUT

Config
-> (RemoteData Error success -> msg)
-> Decoder success
-> { methodName : String
, value : Value
}
-> Cmd msg

HTTP DELETE

Raw requests

String
-> List Header
-> String
-> Body
-> (RemoteData Error success -> msg)
-> Decoder success
-> Cmd msg

Raw request that expects a JSON response.

This version can use any method and accepts any body (e.g. Http.fileBody, Http.bytesBody, or Http.emptyBody).

String
-> List Header
-> String
-> Body
-> (RemoteData Error success -> msg)
-> (Metadata -> String -> Result Error success)
-> Cmd msg

Raw request that expects a String response (but not necessarily a valid JSON String).

This version can use any method and accepts any body (e.g. Http.fileBody, Http.bytesBody, or Http.emptyBody). Additionally, instead of providing a Json.Decode.Decoder to handle the response, you provide a function which can transform the String response body (and response metadata) however you need.

Helper functions

getErrorMessage : { a | localization : Localization } -> Error -> String

Get the localized error message from the Error

Decoders

configDecoder : Decoder Config

Json decoder for Config

serverErrorDecoder : { a | localization : Localization } -> Decoder String

JSON decoder for server error, localized.

The error comes from a string field named "ExceptionMessage", "exceptionMessage", "Message", "message", or otherwise multipleServerErrorDecoder.

multipleServerErrorDecoder : { a | localization : Localization } -> Decoder String

JSON decoder for multiple server error messages, localized.

The messages come from a string array field named "ExceptionMessage", "exceptionMessage", "Messages", or "message". These values are then concatenated with spaces.

nullDecoder : Decoder ()

Null decoder. Useful for when the server doesn't return any value.