🪁 A simple, type-safe http server for PureScript
Go to file
Wenbo Gao 4319cffed6
Cache Body toBuffer/toString Results (#189)
* cache `body` processing results (Buffer, String) with `Ref`

* add `readBodyAs(Buffer|Stream|String)` for accessing `body`

* fix tests

* add tests for `readBodyAsBuffer` and `readBodyAsString`

* move Body to HTTPure.Body and rename it to RequestBody

* add HTTPure.Body.toStream

* consolidate `readBodyAs(Buffer|String)` into `to(Buffer|String)`

and move `Ref` from top level `body` down to `buffer` and `string` fields

* fix tests

* import constructors explicitly

* revert changes

This reverts commit e53188c3e6d74ca00d3d891829ca91f0803b870b.

* update `Body.read` to return `RequestBody`
2021-12-06 20:59:53 -08:00
.github/workflows Rename master to main in github workflow 2021-11-20 09:47:43 -08:00
docs Clean up imports (#185) 2021-11-18 22:16:35 -08:00
src Cache Body toBuffer/toString Results (#189) 2021-12-06 20:59:53 -08:00
test Cache Body toBuffer/toString Results (#189) 2021-12-06 20:59:53 -08:00
.envrc #153 bind to 0.0.0.0 instead of localhost (#154) 2020-02-26 16:43:38 -08:00
.gitignore Regenerate bower.json 2021-11-20 09:47:43 -08:00
.tidyrc.json Migrate from purty to purs-tidy (#178) 2021-11-06 12:37:31 -07:00
bower.json Regenerate bower.json 2021-11-20 09:47:43 -08:00
Contributing.md Rename 'master' branch to 'main' (#173) 2021-03-22 12:34:49 -07:00
History.md Release notes for v0.13.1 2021-11-29 21:19:33 -08:00
License Clean up file naming and directory structure (#21) 2017-07-10 12:06:14 -07:00
packages.dhall Update project setup (#183) 2021-11-12 23:46:59 -08:00
Readme.md Clean up imports (#185) 2021-11-18 22:16:35 -08:00
Releasing.md Update Releasing notes 2021-11-20 09:47:43 -08:00
shell.nix Upgrade sources 2021-11-20 09:35:41 -08:00
sources.json Upgrade sources 2021-11-20 09:35:41 -08:00
sources.nix #153 bind to 0.0.0.0 instead of localhost (#154) 2020-02-26 16:43:38 -08:00
spago.dhall Update project setup (#183) 2021-11-12 23:46:59 -08:00
test.dhall Update project setup (#183) 2021-11-12 23:46:59 -08:00

HTTPure

License Latest release purescript-httpure on Pursuit

A purescript HTTP server framework.

HTTPure is:

  • Well-tested (see our tests)
  • Well-documented (see our documentation)
  • Built to take advantage of PureScript language features for flexible and extensible routing
  • Pure (no set, get, use, etc)

Status

This project is currently fairly stable, but has not reached it's 1.0 release yet. You can track what's left before it gets there by looking at our roadmap. The API signatures are mostly stable, but are subject to change before the 1.0 release if there's a good reason to change them.

If you'd like to help us get to 1.0 quicker, please contribute! To get started, check our contributing guide.

Installation

spago install httpure

Quick Start

module Main where

import Prelude

import Effect.Console (log)
import HTTPure (ServerM, serve, ok)

main :: ServerM
main = serve 8080 router $ log "Server now up on port 8080"
  where
    router _ = ok "hello world!"

Documentation

Module documentation is published on Pursuit.

You can also take a look at our guides.

Examples

HTTPure ships with a number of examples. To run an example, in the project root, run:

nix-shell --run 'example <Example Name>'

Or, without nix:

spago -x test.dhall run --main Examples.<Example Name>.Main

Each example's startup banner will include information on routes available on the example server.

Testing

To run the test suite, in the project root run:

nix-shell --run check

Or, if nix isn't your thing:

purs-tidy check src test docs && spago -x test.dhall test

Contributing

We are open to accepting contributions! Please see the contributing guide.

People

HTTPure is written and maintained by Connor Prussin and Petri Lehtinen.

We are open to accepting contributions! Please see the contributing guide.

License

MIT