David Pedersen
f25f7f90ff
Implement IntoResponse
for Body
2021-07-22 21:22:46 +02:00
David Pedersen
1fb80a1129
Implement IntoResponse
for HeaderMap
2021-07-22 21:21:53 +02:00
David Pedersen
ba9c03d146
Update links
2021-07-22 19:39:08 +02:00
David Pedersen
7c37bb818a
Update goals in readme
2021-07-22 15:44:59 +02:00
David Pedersen
e4a0199c76
Add missing TOC link
2021-07-22 15:38:55 +02:00
David Pedersen
8faed8120f
Docs improvements ( #37 )
2021-07-22 15:00:33 +02:00
David Pedersen
a658c94f23
Use correct error type if Json
serialization fails
...
Fixes https://github.com/davidpdrsn/axum/issues/35
2021-07-22 13:26:14 +02:00
David Pedersen
f32d325e55
Make extractors easier to write ( #36 )
...
Previously extractors worked directly on `Request<B>` which meant you
had to do weird tricks like `mem::take(req.headers_mut())` to get owned
parts of the request.
This changes that instead to use a new `RequestParts` type that have
methods to "take" each part of the request. Without having to do weird
tricks.
Also removed the need to have `B: Default` for body extractors.
2021-07-22 13:23:50 +02:00
David Pedersen
e544fe1c39
More flexible generic responses
2021-07-22 11:14:55 +02:00
David Pedersen
028c472c84
Add Multipart
extractor for consuming multipart/form-data
requests ( #32 )
...
Multipart implementation on top of `multer`
2021-07-14 16:53:37 +02:00
David Pedersen
e641caefaf
Remove hyper-h1
and hyper-h2
features ( #31 )
2021-07-14 16:29:06 +02:00
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
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
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
b6e67eefd7
Add support for extracting typed headers ( #18 )
...
Uses the `headers` crate.
2021-06-15 21:27:21 +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
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
a005427d40
Write some docs
2021-06-06 15:19:54 +02:00
David Pedersen
470d6ceabd
Add prelude
2021-06-06 11:42:44 +02:00
David Pedersen
46398afc72
Move things around a bit
2021-06-06 11:37:08 +02:00
David Pedersen
c3977d0b71
Change routing DSL
2021-06-04 01:00:48 +02:00
David Pedersen
e156bc40e1
not quite working
2021-06-03 21:36:39 +02:00
David Pedersen
00737c4e0a
checkpoint
2021-06-02 22:07:37 +02:00
David Pedersen
0d7e1e74c4
Adding layers to the whole thing
2021-06-01 21:15:48 +02:00
David Pedersen
8ee3119fb0
More error handling of layered handlers
2021-06-01 17:17:10 +02:00
David Pedersen
ea582ab8d9
Quality of life improvements
2021-06-01 14:52:18 +02:00
David Pedersen
90b9dffce7
Add remaining routing methods
2021-06-01 12:25:28 +02:00
David Pedersen
c0bf77cbe4
Update readme
2021-06-01 12:12:01 +02:00
David Pedersen
f690e74275
Support nesting services with error handling
2021-06-01 11:23:56 +02:00
David Pedersen
093ad3622e
Some simplifications
2021-06-01 08:32:58 +02:00
David Pedersen
0e38037c74
More error handling
2021-06-01 00:37:07 +02:00
David Pedersen
18f613ff98
This changes everything
2021-05-31 22:54:21 +02:00
David Pedersen
19cbece1dc
Rename error type
2021-05-31 20:53:03 +02:00
David Pedersen
d33be9683c
Don't force handlers to return Result
s
2021-05-31 20:42:57 +02:00
David Pedersen
f6b1a6f435
More work
2021-05-31 16:28:26 +02:00
David Pedersen
867dd8012c
Add some more tests
2021-05-31 14:04:05 +02:00
David Pedersen
11843addf6
Just use async_trait for FromRequest
2021-05-31 12:55:39 +02:00
David Pedersen
593c901aab
Start writing more tests
2021-05-31 12:22:16 +02:00
David Pedersen
6822766165
Add Html
response type
2021-05-31 10:20:07 +02:00
David Pedersen
0b2f791bf4
Typed url param extractor
2021-05-30 16:53:39 +02:00
David Pedersen
03fb15e7a7
Changes to UrlParamsMap
2021-05-30 16:37:27 +02:00
David Pedersen
763d4e8d21
Routing with dynamic parts!
2021-05-30 15:44:26 +02:00
David Pedersen
7328127a3d
Add example
2021-05-30 14:33:36 +02:00
David Pedersen
f4268471b6
Break things into modules
2021-05-30 13:24:03 +02:00
David Pedersen
e1fa8d4fed
Add some more todos
2021-05-30 12:30:52 +02:00
David Pedersen
433b3183c4
Generic response types
2021-05-30 12:26:58 +02:00
David Pedersen
bf3d4f4a40
generic body almost kinda works
2021-05-30 11:56:13 +02:00
David Pedersen
10b38b5421
more todos
2021-05-30 11:27:26 +02:00
David Pedersen
f08b73f7b2
Seal Handler
trait
2021-05-30 11:19:36 +02:00
David Pedersen
2e16842431
Add extension extractor
2021-05-30 11:07:56 +02:00
David Pedersen
b763eaa037
Fix layer support
2021-05-30 04:28:24 +02:00
David Pedersen
f983b37fea
Support routing to tower services
2021-05-30 03:12:47 +02:00
David Pedersen
433128102b
More flexible error types
2021-05-30 02:29:41 +02:00
David Pedersen
a04c98dd42
Support any type of response body
2021-05-30 01:57:01 +02:00
David Pedersen
5efa7ab7ea
More flexible handlers
2021-05-30 01:35:17 +02:00
David Pedersen
0513b56faf
better readiness handling and less boxing
2021-05-30 01:11:18 +02:00
David Pedersen
33f2e5f661
A bit of clean up
2021-05-30 00:52:04 +02:00
David Pedersen
07294378b3
Initial pile of hacks
2021-05-29 21:13:06 +02:00