Commit Graph

57 Commits

Author SHA1 Message Date
sigma-andex
88169cd299 Separate headers into request and response headers
- Add response header construction using records
- Update tests and examples
- Update doc
2022-06-16 20:06:07 +01:00
sigma-andex
8733799cb0 WIP 2022-06-16 20:06:07 +01:00
sigma-andex
17358051fb Fix test 2022-06-06 10:57:13 +01:00
sigma-andex
d214d46cdf Add json parsing test 2022-06-06 10:57:13 +01:00
sigma-andex
fcf532bd71
Add hello world example to readme & format code 2022-05-22 17:54:11 +01:00
sigma-andex
345675d5bd Make settings optional
- Add default onStarted and closingHandler
- Use justifill to easily add options
- Remove multiple serve options
2022-05-22 17:37:42 +01:00
sigma-andex
c16eb2bdcc Rename modules and rudimentarily update readme 2022-05-22 12:48:32 +01:00
sigma-andex
9a8f34cf73 Update HTTPure to routing duplex 2022-05-22 12:34:27 +01:00
sigma-andex
24197a474a First working example of routing duplex 2022-05-22 12:34:27 +01:00
Thomas Honeyman
42bf4475e0
Update for PureScript 0.15 (#194)
* Update shell and packages

* Fix code for 0.15

* Fix tests

* Format

* Add check-pulp command

* Generate bowerfile

* Add check-pulp to CI

* Add nixfmt to formatting

* Fixup test helpers

* Take 2

* PR comments (#1)

* Nix cleanup from PR

* Use arrows functions

* Remove unnecessary step

Co-authored-by: Connor Prussin <connor@prussin.net>
2022-05-04 14:02:29 -07:00
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
Connor Prussin
8295d8755e
Clean up imports (#185)
* Clean up import declarations to only use qualified when necessary

* Remove unused imports
2021-11-18 22:16:35 -08:00
Connor Prussin
6e886b91ac
Add support for non string requests (#184)
* First version of supporting non-string requests

* Clean up

* Minor cleanup

* Simplify to directly export the stream

* Add nl

* Clean up & add more testing

Co-authored-by: sigma-andex <sigma.andex@pm.me>
2021-11-15 20:02:36 -08:00
Thomas Honeyman
6ce52417f7
Migrate from purty to purs-tidy (#178)
* Replace purty with purs-tidy

* run purs-tidy
2021-11-06 12:37:31 -07:00
Connor Prussin
c075df65d7
Ensure correct ordering on stream operations (#176) 2021-06-25 10:58:16 -07:00
Connor Prussin
1da43a09c4
Minor cleanup - remove unused imports 2021-06-25 10:25:17 -07:00
Connor Prussin
1ad5a08306
Add code formatting with purty (#171)
* Add code formatting with purty

* Purtify code
2021-03-22 12:02:36 -07:00
Connor Prussin
52f19fbabb
Don't use echo -n since it's nonportable to OSX (#170) 2021-03-20 15:44:36 -07:00
Tim McIver
b3eb977096
Fix HTTPure.Utils.replacePlus (#166)
* Create failing test.

* Fix code so failing test passes.
2020-11-14 13:09:07 -08:00
Drew Olson
ac43b0d125 Update response functions to return MonadAff m => m Response (#150)
* Update Response functions to return MonadAffs

* Install psc-package for travis build
2019-09-29 20:57:15 -07:00
Gareth Smith
d37096dcce Add some type declarations to get compatibility with node-buffer 6.x. (#149)
Since node-buffer 6.x is not yet in the package set, compatibility with
node-buffer 5.x is maintained.
2019-09-24 17:09:29 -07:00
Gareth Smith
4d5518eff5 Update the tests to work with purescript-spec v4.0.0 (#147)
This version was already being pulled in by the package set, so the
tests were breaking.

Also update bower.json to match the package set dependencies.
2019-09-23 13:14:21 -07:00
Hardy Jones
5d7c2c8bda Use CaseInsensitiveString for Headers (#138)
* v0.8.1

* Add failing tests for `Headers`

There's currently a bug with `Headers`:
if a header is created with uppercase characters, it can never be found.
The problem is that we only look for lowercase characters in the
`Lookup` instance for `Headers`.

* Convert `Headers` to use `CaseInsensitiveString`

In an effort to be more true to HTTP,
we make the header keys case-insensitive.
This fixes the issue of looking up a header where the casing is different,
Since `CaseInsensitiveString`s compare in a way that ignore casing.

The API for consumers for `Headers` stays the same,
but we get more correct code.
A win for all!
2019-04-25 20:06:15 -07:00
Hardy Jones
c208dffb7b Add HTTP version (#137)
* v0.8.1

* Add the HTTP version to `Request`

The `node-http` `Request` has the HTTP version on it.
We can make it available in our `Request` for consumers.

We went the naive approach first and typed it as a string.
There is some structure to the version,
so we could attempt to parse it.
It's unclear what we would do if parsing failed though.

Maybe we want something like:
```PureScript
data Version
  = Known { major :: Int, minor :: Int }
  | Unknown String
```

That would allow us to parse the known format,
and fallback to accepting anything else.
It's definitely something to discuss anyway.

* Make HTTP version its own data type

There are only a handful of HTTP versions that are commonly used.
We can talk about those explicitly and fallback to any arbitrary version.

The changes here try to follow the patterns elsewhere in the code base.
Hopefully, it's not too far off.
2019-04-25 10:13:04 -07:00
Petri Lehtinen
98b0b4e268 Query param fixes (#128)
* Represent emtpy query parameters as empty strings instead of "true"

* Encode and decode query params

Fixes #126

* Pass invalid query parameters through instead of ignoring them

* Decode the plus sign `+` as a space ` ` in query string

* Decode percent encoding in path segments

* Update History.md
2018-11-06 09:45:37 -08:00
Petri Lehtinen
d333c6f6b3 Respond with 500 Internal Server Error upon unhandled exceptions (#123)
Refs #109
2018-10-09 10:37:23 -07:00
Connor Prussin
ce4a10a3b5
Make server cancelable and clean up examples and tests (#112) 2018-09-02 14:05:54 -07:00
Connor Prussin
1adbcecaaa
Chunked responses (#107)
* Chunked responses

* Remove Chunked newtype wrapper around Streams

* Use child process instead of ffi stream for chunked example

* Rename additionalHeaders to defaultHeaders

* Add History.md entry

* General cleanup
2018-08-30 15:01:49 -07:00
Connor Prussin
1bde8b4b1d
Consolidate APIs (#104)
* Consolidate APIs

* Use partial function approach instead of Streamable typeclass

* Clean up
2018-08-26 21:54:04 -07:00
Petri Lehtinen
2673bd4b0b
Fix Content-Length for non-ASCII response bodies (#103)
Fixes #101
2018-08-25 07:49:28 +03:00
Petri Lehtinen
3e94aa6f9d Support binary response body (#99)
* Support binary response body

Fixes #98

* Address PR comments

- Expose data constructors for Body and use them for construction and
  pattern matching instead of various helpers

- Add an example and integration test for binary response

- Adjust the middleware example to be a bit nicer
2018-08-19 19:50:07 -07:00
Connor Prussin
4c9acefaea
Set the Content-Length header based on the body contents (#93) 2018-07-10 22:23:28 -07:00
Petri Lehtinen
8badd62b3e PureScript 0.12 support (#89)
- Upgrade all dependencies
- Use Effect instead of Eff
- Use Foreign.Object instead of StrMap
- Use Effect.Ref instead of Control.Monad.ST
- Drop SecureServerM, it's the same as ServerM now
2018-07-08 16:16:48 -07:00
Connor Prussin
1f8024643c
Fix compiler warning 2018-02-24 19:57:46 -08:00
Connor Prussin
435003e2ab
Uprev dependencies 2018-02-24 18:51:07 -08:00
Connor Prussin
7c606aec49
Add custom HTTP configurations (#88) 2018-02-08 21:46:45 -08:00
Connor Prussin
0fa3d1a90c Clean up tests and examples (#86) 2017-10-26 17:19:30 -04:00
Connor Prussin
133b98c9c6 Add helpers in Lookup and return a Maybe from lookup. (#84) 2017-10-23 18:50:27 -04:00
Connor Prussin
f38c5987ee Add fullPath function for inspecting and logging full resolved request path (#81) 2017-09-29 09:52:21 -07:00
Connor Prussin
8760334dcd Make response helpers API consistent (#79) 2017-09-29 07:49:46 -07:00
Connor Prussin
f4599b276b Add Headers.empty and Headers.header (#78) 2017-09-29 07:25:31 -07:00
Connor Prussin
48c529e9be Add middleware example (#73) 2017-09-27 12:34:00 -07:00
Connor Prussin
d50be71fdc Make ResponseM async (#71) 2017-09-27 06:55:36 -07:00
Connor Prussin
0e71e9204a Add tooling for working with query parameters (#69) 2017-09-26 00:14:06 -07:00
Connor Prussin
278e110d59 Improve and simplify APIs (#68) 2017-09-25 23:08:07 -07:00
Connor Prussin
bd58415e3b Add SSL support (#55) 2017-08-01 22:08:27 -07:00
Connor Prussin
b88b905dad Code cleanup (#54) 2017-08-01 22:08:27 -07:00
Connor Prussin
008924e861 Code cleanup (#50) 2017-07-20 15:48:59 -07:00
Connor Prussin
930130b624 Support all HTTP status codes (#49) 2017-07-19 11:59:55 -07:00
Connor Prussin
38e6421bc5 Don't hardcode port numbers for examples in integration tests (#46) 2017-07-18 22:44:38 -07:00