Module

HTTPure

Package
purescript-httpure
Repository
cprussin/purescript-httpure

Re-exports from HTTPure.Headers

#Headers Source

newtype Headers

The Headers type is just sugar for a StrMap of Strings that represents the set of headers in an HTTP request or response.

Instances

  • Lookup Headers String String

    Given a string, return a Maybe containing the value of the matching header, if there is any.

  • Show Headers

    Allow a Headers to be represented as a string. This string is formatted in HTTP headers format.

  • Eq Headers

    Compare two Headers objects by comparing the underlying StrMaps.

  • Semigroup Headers

    Allow one Headers objects to be appended to another.

#headers Source

headers :: Array (Tuple String String) -> Headers

Convert an Array of Tuples of 2 Strings to a Headers object.

#header Source

header :: String -> String -> Headers

Create a singleton header from a key-value pair.

#empty Source

empty :: Headers

Return a Headers containing nothing.

Re-exports from HTTPure.Lookup

#lookup Source

lookup :: forall c k r. Lookup c k r => c -> k -> Maybe r

Given some type and a key on that type, extract some value that corresponds to that key.

#has Source

has :: forall r k c. Lookup (c r) k r => c r -> k -> Boolean

This simple helper works on any Lookup instance, where the container set has a single type variable, and returns a Boolean indicating if the given key matches any value in the given container.

#at Source

at :: forall r k c. Monoid r => Lookup c k r => c -> k -> r

This simple helper works on any Lookup instance where the return type is a Monoid, and is the same as lookup except that it returns a t instead of a Maybe t. If lookup would return Nothing, then at returns mempty.

#(!@) Source

Operator alias for HTTPure.Lookup.at (left-associative / precedence 8)

Expose at as the infix operator !@

#(!?) Source

Operator alias for HTTPure.Lookup.has (left-associative / precedence 8)

Expose has as the infix operator !?

#(!!) Source

Operator alias for HTTPure.Lookup.lookup (left-associative / precedence 8)

!! is inspired by !! in Data.Array, but note that it differs from !! in Data.Array in that you can use !! for any other instance of Lookup.

Re-exports from HTTPure.Method

#Method Source

data Method

These are the HTTP methods that HTTPure understands.

Constructors

Instances

Re-exports from HTTPure.Path

#Path Source

type Path = Array String

The Path type is just sugar for an Array of String segments that are sent in a request and indicates the path of the resource being requested. Note that this type has an implementation of Lookup for Int keys defined by lookupArray in Lookup.purs because lookupArray is defined for any Array of Monoids. So you can do something like path !! 2 to get the path segment at index 2.

Re-exports from HTTPure.Request

#Request Source

type Request = { body :: Body, headers :: Headers, method :: Method, path :: Path, query :: Query }

The Request type is a Record type that includes fields for accessing the different parts of the HTTP request.

#fullPath Source

fullPath :: Request -> String

Return the full resolved path, including query parameters. This may not match the requested path--for instance, if there are empty path segments in the request--but it is equivalent.

Re-exports from HTTPure.Response

#ResponseM Source

type ResponseM e = Aff (HTTPureEffects e) Response

The ResponseM type simply conveniently wraps up an HTTPure monad that returns a response. This type is the return type of all router/route methods.

#variantAlsoNegotiates' Source

variantAlsoNegotiates' :: forall e. Headers -> ResponseM e

506 with headers

#variantAlsoNegotiates Source

variantAlsoNegotiates :: forall e. ResponseM e

506

#useProxy' Source

useProxy' :: forall e. Headers -> Body -> ResponseM e

305 with headers

#useProxy Source

useProxy :: forall e. Body -> ResponseM e

305

#upgradeRequired' Source

upgradeRequired' :: forall e. Headers -> ResponseM e

426 with headers

#upgradeRequired Source

upgradeRequired :: forall e. ResponseM e

426

#unsupportedMediaType' Source

unsupportedMediaType' :: forall e. Headers -> ResponseM e

415 with headers

#unsupportedMediaType Source

unsupportedMediaType :: forall e. ResponseM e

415

#unprocessableEntity' Source

unprocessableEntity' :: forall e. Headers -> ResponseM e

422 with headers

#unprocessableEntity Source

unprocessableEntity :: forall e. ResponseM e

422

#unavailableForLegalReasons' Source

unavailableForLegalReasons' :: forall e. Headers -> ResponseM e

451 with headers

#unavailableForLegalReasons Source

#unauthorized' Source

unauthorized' :: forall e. Headers -> ResponseM e

401 with headers

#unauthorized Source

unauthorized :: forall e. ResponseM e

401

#uRITooLong' Source

uRITooLong' :: forall e. Headers -> ResponseM e

414 with headers

#uRITooLong Source

uRITooLong :: forall e. ResponseM e

414

#tooManyRequests' Source

tooManyRequests' :: forall e. Headers -> ResponseM e

429 with headers

#tooManyRequests Source

tooManyRequests :: forall e. ResponseM e

429

#temporaryRedirect' Source

temporaryRedirect' :: forall e. Headers -> Body -> ResponseM e

307 with headers

#temporaryRedirect Source

temporaryRedirect :: forall e. Body -> ResponseM e

307

#switchingProtocols' Source

switchingProtocols' :: forall e. Headers -> ResponseM e

101 with headers

#switchingProtocols Source

switchingProtocols :: forall e. ResponseM e

101

#serviceUnavailable' Source

serviceUnavailable' :: forall e. Headers -> ResponseM e

503 with headers

#serviceUnavailable Source

serviceUnavailable :: forall e. ResponseM e

503

#seeOther' Source

seeOther' :: forall e. Headers -> Body -> ResponseM e

303 with headers

#seeOther Source

seeOther :: forall e. Body -> ResponseM e

303

#response' Source

response' :: forall e. Status -> Headers -> Body -> ResponseM e

The same as response but with headers.

#response Source

response :: forall e. Status -> Body -> ResponseM e

For custom response statuses or providing a body for response codes that don't typically send one.

#resetContent' Source

resetContent' :: forall e. Headers -> ResponseM e

205 with headers

#resetContent Source

resetContent :: forall e. ResponseM e

205

#requestTimeout' Source

requestTimeout' :: forall e. Headers -> ResponseM e

408 with headers

#requestTimeout Source

requestTimeout :: forall e. ResponseM e

408

#requestHeaderFieldsTooLarge' Source

requestHeaderFieldsTooLarge' :: forall e. Headers -> ResponseM e

431 with headers

#requestHeaderFieldsTooLarge Source

#rangeNotSatisfiable' Source

rangeNotSatisfiable' :: forall e. Headers -> ResponseM e

416 with headers

#rangeNotSatisfiable Source

rangeNotSatisfiable :: forall e. ResponseM e

416

#proxyAuthenticationRequired' Source

proxyAuthenticationRequired' :: forall e. Headers -> ResponseM e

407 with headers

#proxyAuthenticationRequired Source

#processing' Source

processing' :: forall e. Headers -> ResponseM e

102 with headers

#processing Source

processing :: forall e. ResponseM e

102

#preconditionRequired' Source

preconditionRequired' :: forall e. Headers -> ResponseM e

428 with headers

#preconditionRequired Source

preconditionRequired :: forall e. ResponseM e

428

#preconditionFailed' Source

preconditionFailed' :: forall e. Headers -> ResponseM e

412 with headers

#preconditionFailed Source

preconditionFailed :: forall e. ResponseM e

412

#permanentRedirect' Source

permanentRedirect' :: forall e. Headers -> Body -> ResponseM e

308 with headers

#permanentRedirect Source

permanentRedirect :: forall e. Body -> ResponseM e

308

#paymentRequired' Source

paymentRequired' :: forall e. Headers -> ResponseM e

402 with headers

#paymentRequired Source

paymentRequired :: forall e. ResponseM e

402

#payloadTooLarge' Source

payloadTooLarge' :: forall e. Headers -> ResponseM e

413 with headers

#payloadTooLarge Source

payloadTooLarge :: forall e. ResponseM e

413

#partialContent' Source

partialContent' :: forall e. Headers -> Body -> ResponseM e

206 with headers

#partialContent Source

partialContent :: forall e. Body -> ResponseM e

206

#ok' Source

ok' :: forall e. Headers -> Body -> ResponseM e

200 with headers

#ok Source

ok :: forall e. Body -> ResponseM e

200

#notModified' Source

notModified' :: forall e. Headers -> ResponseM e

304 with headers

#notModified Source

notModified :: forall e. ResponseM e

304

#notImplemented' Source

notImplemented' :: forall e. Headers -> ResponseM e

501 with headers

#notImplemented Source

notImplemented :: forall e. ResponseM e

501

#notFound' Source

notFound' :: forall e. Headers -> ResponseM e

404 with headers

#notFound Source

notFound :: forall e. ResponseM e

404

#notExtended' Source

notExtended' :: forall e. Headers -> ResponseM e

510 with headers

#notExtended Source

notExtended :: forall e. ResponseM e

510

#notAcceptable' Source

notAcceptable' :: forall e. Headers -> ResponseM e

406 with headers

#notAcceptable Source

notAcceptable :: forall e. ResponseM e

406

#nonAuthoritativeInformation' Source

nonAuthoritativeInformation' :: forall e. Headers -> Body -> ResponseM e

203 with headers

#nonAuthoritativeInformation Source

#noContent' Source

noContent' :: forall e. Headers -> ResponseM e

204 with headers

#noContent Source

noContent :: forall e. ResponseM e

204

#networkAuthenticationRequired' Source

networkAuthenticationRequired' :: forall e. Headers -> ResponseM e

511 with headers

#networkAuthenticationRequired Source

#multipleChoices' Source

multipleChoices' :: forall e. Headers -> Body -> ResponseM e

300 with headers

#multipleChoices Source

multipleChoices :: forall e. Body -> ResponseM e

300

#multiStatus' Source

multiStatus' :: forall e. Headers -> Body -> ResponseM e

207 with headers

#multiStatus Source

multiStatus :: forall e. Body -> ResponseM e

207

#movedPermanently' Source

movedPermanently' :: forall e. Headers -> Body -> ResponseM e

301 with headers

#movedPermanently Source

movedPermanently :: forall e. Body -> ResponseM e

301

#misdirectedRequest' Source

misdirectedRequest' :: forall e. Headers -> ResponseM e

421 with headers

#misdirectedRequest Source

misdirectedRequest :: forall e. ResponseM e

421

#methodNotAllowed' Source

methodNotAllowed' :: forall e. Headers -> ResponseM e

405 with headers

#methodNotAllowed Source

methodNotAllowed :: forall e. ResponseM e

405

#loopDetected' Source

loopDetected' :: forall e. Headers -> ResponseM e

508 with headers

#loopDetected Source

loopDetected :: forall e. ResponseM e

508

#locked' Source

locked' :: forall e. Headers -> ResponseM e

423 with headers

#locked Source

locked :: forall e. ResponseM e

423

#lengthRequired' Source

lengthRequired' :: forall e. Headers -> ResponseM e

411 with headers

#lengthRequired Source

lengthRequired :: forall e. ResponseM e

411

#internalServerError' Source

internalServerError' :: forall e. Headers -> Body -> ResponseM e

500 with headers

#internalServerError Source

internalServerError :: forall e. Body -> ResponseM e

500

#insufficientStorage' Source

insufficientStorage' :: forall e. Headers -> ResponseM e

507 with headers

#insufficientStorage Source

insufficientStorage :: forall e. ResponseM e

507

#imATeapot' Source

imATeapot' :: forall e. Headers -> ResponseM e

418 with headers

#imATeapot Source

imATeapot :: forall e. ResponseM e

418

#iMUsed' Source

iMUsed' :: forall e. Headers -> Body -> ResponseM e

226 with headers

#iMUsed Source

iMUsed :: forall e. Body -> ResponseM e

226

#hTTPVersionNotSupported' Source

hTTPVersionNotSupported' :: forall e. Headers -> ResponseM e

505 with headers

#hTTPVersionNotSupported Source

#gone' Source

gone' :: forall e. Headers -> ResponseM e

410 with headers

#gone Source

gone :: forall e. ResponseM e

410

#gatewayTimeout' Source

gatewayTimeout' :: forall e. Headers -> ResponseM e

504 with headers

#gatewayTimeout Source

gatewayTimeout :: forall e. ResponseM e

504

#found' Source

found' :: forall e. Headers -> Body -> ResponseM e

302 with headers

#found Source

found :: forall e. Body -> ResponseM e

302

#forbidden' Source

forbidden' :: forall e. Headers -> ResponseM e

403 with headers

#forbidden Source

forbidden :: forall e. ResponseM e

403

#failedDependency' Source

failedDependency' :: forall e. Headers -> ResponseM e

424 with headers

#failedDependency Source

failedDependency :: forall e. ResponseM e

424

#expectationFailed' Source

expectationFailed' :: forall e. Headers -> ResponseM e

417 with headers

#expectationFailed Source

expectationFailed :: forall e. ResponseM e

417

#emptyResponse' Source

emptyResponse' :: forall e. Status -> Headers -> ResponseM e

The same as emptyResponse but with headers.

#emptyResponse Source

emptyResponse :: forall e. Status -> ResponseM e

The same as response but without a body.

#created' Source

created' :: forall e. Headers -> ResponseM e

201 with headers

#created Source

created :: forall e. ResponseM e

201

#continue' Source

continue' :: forall e. Headers -> ResponseM e

100 with headers

#continue Source

continue :: forall e. ResponseM e

100

#conflict' Source

conflict' :: forall e. Headers -> Body -> ResponseM e

409 with headers

#conflict Source

conflict :: forall e. Body -> ResponseM e

409

#badRequest' Source

badRequest' :: forall e. Headers -> Body -> ResponseM e

400 with headers

#badRequest Source

badRequest :: forall e. Body -> ResponseM e

400

#badGateway' Source

badGateway' :: forall e. Headers -> ResponseM e

502 with headers

#badGateway Source

badGateway :: forall e. ResponseM e

502

#alreadyReported' Source

alreadyReported' :: forall e. Headers -> ResponseM e

208 with headers

#alreadyReported Source

alreadyReported :: forall e. ResponseM e

208

#accepted' Source

accepted' :: forall e. Headers -> ResponseM e

202 with headers

#accepted Source

accepted :: forall e. ResponseM e

202

Re-exports from HTTPure.Server

#ServerM Source

type ServerM e = Eff (HTTPureEffects e) Unit

The ServerM type simply conveniently wraps up an HTTPure monad that returns a Unit. This type is the return type of the HTTPure serve and related methods.

#SecureServerM Source

type SecureServerM e = ServerM (fs :: FS | e)

The SecureServerM type is the same as the ServerM type, but it includes effects for working with the filesystem (to load the key and certificate).

#serve' Source

serve' :: forall e. Int -> String -> String -> (Request -> ResponseM (fs :: FS | e)) -> SecureServerM e -> SecureServerM e

Create and start an SSL server. This method is the same as serve, but takes additional SSL arguments. The arguments in order are:

  1. A port number
  2. A path to a cert file
  3. A path to a private key file
  4. A handler method which maps Request to ResponseM
  5. A callback to call when the server is up

#serve Source

serve :: forall e. Int -> (Request -> ResponseM e) -> ServerM e -> ServerM e

Create and start a server. This is the main entry point for HTTPure. Takes a port number on which to listen, a function mapping Request to ResponseM, and a ServerM containing effects to run after the server has booted (usually logging). Returns an ServerM containing the server's effects.