aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2020-06-28examples/server: Try using a `conduit_router::RouteBuilder`Teddy Wing
Try making a server with more than one route.
2020-06-28Server::start: Implement `conduit::Body::File` responseTeddy Wing
2020-06-28Server::start(): Write HTTP version and status codeTeddy Wing
2020-06-28Server: Working `start()` implementationTeddy Wing
Got a draft version of the server working. Change the example to use the new Conduit server. Got a working HTML fragment response. Need to handle `conduit::Body::File` as well as unwrapped errors.
2020-06-28FastCgiRequest::new: Remove unnecessary variableTeddy Wing
2020-06-28FastCgiRequest: Reorder `host` method implementationTeddy Wing
To match the struct field order.
2020-06-28FastCgiRequest: Implement `conduit::RequestExt` `body` methodTeddy Wing
Needed to change some things around to be able to use a mutable borrow for the `fastcgi::Stdin` body and an immutable borrow of `request` for all the other fields. Passed `fastcgi::Stdin` over through a `Read` implementation, because returning `&mut self.request.stdin()` was impossible, since the caller owns the `fastcgi::Stdin` reference.
2020-06-28FastCgiRequest: Add empty extensions map to implsTeddy Wing
2020-06-28FastCgiRequest: Add headers to `conduit::RequestExt`Teddy Wing
2020-06-28FastCgiRequest: Add content lengthTeddy Wing
2020-06-28FastCgiRequest: Add remote addrTeddy Wing
Seemed to make sense to add a new error type to group the parse errors together.
2020-06-27FastCgiRequest: Add query stringTeddy Wing
2020-06-27FastCgiRequest: Add request pathTeddy Wing
2020-06-27FastCgiRequest: Use a `None` `virtual_root`Teddy Wing
Looks like we don't need to implement this hopefully.
2020-06-27FastCgiRequest: Remove elidable `'b` lifetime in `conduit::RequestExt`Teddy Wing
Turns out I don't need this `'b` lifetime in the `conduit::RequestExt` `impl`. I had just assumed it was necessary because I copied it as `'a` from the "missing trait methods" error message.
2020-06-27FastCgiRequest: Start implementing `conduit::RequestExt`Teddy Wing
Was getting this error about the lifetimes in the trait impl: error[E0308]: method not compatible with trait --> src/lib.rs:137:4 | 137 | fn host(&'a self) -> conduit::Host<'a> { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ lifetime mismatch | = note: expected fn pointer `fn(&'a FastCgiRequest<'static>) -> conduit::Host<'a>` found fn pointer `fn(&'a FastCgiRequest<'static>) -> conduit::Host<'a>` note: the lifetime `'a` as defined on the method body at 137:4... --> src/lib.rs:137:4 | 137 | fn host(&'a self) -> conduit::Host<'a> { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ note: ...does not necessarily outlive the lifetime `'a` as defined on the impl at 124:6 --> src/lib.rs:124:6 | 124 | impl<'a> conduit::RequestExt for FastCgiRequest { | ^^ error[E0308]: method not compatible with trait --> src/lib.rs:137:4 | 137 | fn host(&'a self) -> conduit::Host<'a> { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ lifetime mismatch | = note: expected fn pointer `fn(&'a FastCgiRequest<'static>) -> conduit::Host<'a>` found fn pointer `fn(&'a FastCgiRequest<'static>) -> conduit::Host<'a>` note: the lifetime `'a` as defined on the impl at 124:6... --> src/lib.rs:124:6 | 124 | impl<'a> conduit::RequestExt for FastCgiRequest { | ^^ note: ...does not necessarily outlive the lifetime `'a` as defined on the method body at 137:4 --> src/lib.rs:137:4 | 137 | fn host(&'a self) -> conduit::Host<'a> { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Learned from these resources that the problem arose because the `impl` uses an `'a` lifetime, but the lifetime on the `host()` method need to be a different one: https://github.com/rust-lang/rust/issues/56423 https://stackoverflow.com/questions/24847331/rust-lifetime-error-expected-concrete-lifetime-but-found-bound-lifetime/24848424#24848424
2020-06-27FastCgiRequest: Add HTTP hostTeddy Wing
2020-06-27FastCgiRequest: Add `conduit::Scheme`Teddy Wing
2020-06-27FastCgiRequest: Add `conduit::Version`Teddy Wing
2020-06-27FastCgiRequest: Parse headers to a `conduit::HeaderMap`Teddy Wing
2020-06-27Create a wrapper struct for `fastcgi::Request`Teddy Wing
Trying out the Conduit API, as it seems like nice interface that I can plug the FastCGI server into. To do this, I need a server type, and some way to convert a `fastcgi::Request` into a `conduit::Request`. Doing this with a new local type that I can use to implement `conduit::RequestExt`.
2020-06-23run(): Convert `fastcgi::Request` to `http::Request`Teddy Wing
Build a new `http::Request` from the `fastcgi::Request` and pass it into the closure. Can't move `req`, so needed to change the `from` converter to take a reference. Update the example code to append the `http::Request` to a file for debugging and inspection.
2020-06-23From<fastcgi::Request>: Make a note to add the request bodyTeddy Wing
So far we only added metadata and headers to the request. We also need to include the body.
2020-06-23From<fastcgi::Request>: Convert HTTP headersTeddy Wing
The HTTP headers from `fastcgi` come with keys in the following format: "HTTP_USER_AGENT", "HTTP_ACCEPT_LANGUAGE". Since most headers use an uppercase first letter of a word with hyphen word separators, make the conversion by: 1. Removing the `HTTP_` prefix 2. Changing `_` to `-` 3. Making the first letter of each word uppercase using the Inflector crate
2020-06-23Start conversion from `fastcgi::Request` to `http::Request`Teddy Wing
Currently only converts the HTTP method and URI. Still need to convert HTTP headers.
2020-06-23Rename crate to `fcgi`Teddy Wing
2020-06-23Ideas for APITeddy Wing
I want a wrapper for `fastcgi::run()` that uses `http::Request` and `http::Response`. Add a `lighttpd.conf` to test the FastCGI. Print FastCGI params to give me an idea of what the request looks like.
2020-06-22Cargo.toml: Add 'fastcgi' and 'http' dependenciesTeddy Wing
2020-06-22Initialise new Rust v1.44.1 projectTeddy Wing
Created with: $ cargo init --lib