Commit graph

96 commits

Author SHA1 Message Date
David Pedersen
341ad61240 Clarify body extractors 2021-07-10 23:46:14 +02:00
David Pedersen
62da1eac00 Allow extractor_middleware to extract the body 2021-07-10 23:39:40 +02:00
David Pedersen
2e2f697f80 Minor docs improvements 2021-07-09 23:39:39 +02:00
David Pedersen
1cbd43cfc4
Add extractor_middleware (#29)
Converts an extractor into a middleware so it can be run for many routes
without having to repeat it in the function signature.
2021-07-09 23:38:59 +02:00
David Pedersen
0c19fa4d52 Minor readme improvements 2021-07-09 21:42:41 +02:00
David Pedersen
f5fa64dae6 Name is no longer pending 2021-07-09 21:37:44 +02:00
David Pedersen
5a5710d290
Rename to axum (#28) 2021-07-09 21:36:14 +02:00
David Pedersen
3cd4a1d6a6
Fix for service as bottom handler (#27)
Would previously fail because of a mismatch in error types.
2021-07-06 09:40:25 +02:00
David Pedersen
c4d266e94d
Allow errors (#26)
This changes error model to actually allow errors. I think if we're going to use this for things like tonic's route we need a more flexible error handling model. The same `handle_error` adaptors are still there but services aren't required to have `Infallible` as their error type. The error type is simply propagated all the way through.
2021-07-05 16:18:39 +02:00
David Pedersen
3fc7f1880f Rename tokio-postgres example 2021-06-19 15:40:46 +02:00
David Pedersen
8d8cc3ba3d
Examples readme (#25)
* Examples readme

* link?
2021-06-19 14:06:49 +02:00
David Pedersen
44577a0108
Add testing example (#24) 2021-06-19 13:44:21 +02:00
David Pedersen
356f1c8424
Generic request body (#22)
Fixes #21
2021-06-19 12:50:33 +02:00
David Pedersen
6a16cd40ca
Add error handling and dependency injection example (#23) 2021-06-19 12:34:42 +02:00
David Pedersen
4fc3d8b5ba
Replace unsafe with unwrap (#20) 2021-06-15 23:18:49 +02:00
David Pedersen
8a82fd00aa
Add bb8 connection pool example (#19)
I figure this will be quite common.
2021-06-15 22:25:41 +02:00
David Pedersen
b6e67eefd7
Add support for extracting typed headers (#18)
Uses the `headers` crate.
2021-06-15 21:27:21 +02:00
David Pedersen
2f6699aeae
Add HTML template example (#17) 2021-06-13 13:58:12 +02:00
David Pedersen
460828a3cb
Add versioning extractor example (#16) 2021-06-13 13:50:56 +02:00
David Pedersen
7684736817 Fix readme link 2021-06-13 13:11:57 +02:00
David Pedersen
97d9cb2ab7 Tweak readme example 2021-06-13 13:09:24 +02:00
David Pedersen
c41c9e0f78
Support extracting URL params multiple times (#15)
Useful when building higher order extractors.
2021-06-13 13:06:33 +02:00
David Pedersen
2b360a7873
Support getting error from extractors (#14)
Makes `Result<T, T::Rejection>` an extractor and makes all extraction errors enums so no type information is lost.
2021-06-13 12:06:59 +02:00
David Pedersen
1002685a20
Rename to awebframework (#13) 2021-06-13 11:22:02 +02:00
David Pedersen
27ebb3db7a
Add Form extractor (#12)
Fixes https://github.com/davidpdrsn/tower-web/issues/2
2021-06-13 11:01:40 +02:00
David Pedersen
59944c231f
Reduce size of response body types (#11)
Wrapping everything in `crate::body::Either` wasn't actually necessary
ans probably causes large body types. You can instead box the bodies in
the leaf services.
2021-06-13 10:10:37 +02:00
David Pedersen
7a051eb2d0
Fix static file serving in examples (#10) 2021-06-13 00:17:17 +02:00
David Pedersen
04d62798b6
Reduce body boxing (#9)
Previously, when routing between one or two requests the two body types
would be merged by boxing them. This isn't ideal since it introduces a
layer indirection for each route.

We can't require the services to be routed between as not all services
use the same body type.

This changes that so it instead uses an `Either` enum that implements
`http_body::Body` if each variant does. Will reduce the overall
allocations and hopefully the compiler can optimize things if both
variants are the same.
2021-06-12 23:59:18 +02:00
David Pedersen
b3bc4e024c
Add RoutingDsl::{serve, into_make_service} (#8) 2021-06-12 21:44:40 +02:00
David Pedersen
c9c507aece
Add support for websockets (#3)
Basically a copy/paste of whats in warp.

Example usage:

```rust
use tower_web::{prelude::*, ws::{ws, WebSocket}};

let app = route("/ws", ws(handle_socket));

async fn handle_socket(mut socket: WebSocket) {
    while let Some(msg) = socket.recv().await {
        let msg = msg.unwrap();
        socket.send(msg).await.unwrap();
    }
}
```
2021-06-12 20:50:30 +02:00
David Pedersen
002e3f92b3
Misc repo setup (#7) 2021-06-12 20:18:21 +02:00
David Pedersen
c91dc7ce29 Make Request<Body> an extractor 2021-06-09 09:42:06 +02:00
David Pedersen
90c3e5ba74 Parameterize ContentLengthLimit 2021-06-09 08:14:20 +02:00
David Pedersen
09f76f3c87 More notes on backpressure 2021-06-09 07:52:04 +02:00
David Pedersen
099e886575 Notes on backpressure 2021-06-08 23:55:25 +02:00
David Pedersen
21872c9f7a Remove some unnecessary dependencies 2021-06-08 22:27:38 +02:00
David Pedersen
1cf78fa807 More docs 2021-06-08 22:04:28 +02:00
David Pedersen
1f8b39f05d More docs and expand key_value_store example 2021-06-08 12:43:16 +02:00
David Pedersen
d7605d3184 Rebuild readme 2021-06-07 16:32:16 +02:00
David Pedersen
d376e49eb9 More docs 2021-06-07 16:28:40 +02:00
David Pedersen
d8b0153939 Write some more docs 2021-06-07 15:45:19 +02:00
David Pedersen
21c96e0aa1 Write a few docs 2021-06-06 23:58:44 +02:00
David Pedersen
46f74895ce Remove duplicated HandleError 2021-06-06 22:43:53 +02:00
David Pedersen
7620f17edc Remove some needless type params 2021-06-06 22:41:52 +02:00
David Pedersen
696fce7b76 Small cleanup 2021-06-06 22:09:17 +02:00
David Pedersen
58c18c2563 Static file serving 2021-06-06 21:53:22 +02:00
David Pedersen
91b1b0bc50 Update docs with nesting 2021-06-06 20:39:54 +02:00
David Pedersen
1609191a74 Nesting and more flexible routing dsl 2021-06-06 20:30:54 +02:00
David Pedersen
b4e2750d6a Tweak hello world example 2021-06-06 15:26:33 +02:00
David Pedersen
35ab973acb Change readme 2021-06-06 15:24:02 +02:00