Skip to content

Commit de3db2f

Browse files
committed
Replace iron with routerify
1 parent 6ac36d8 commit de3db2f

File tree

4 files changed

+41
-32
lines changed

4 files changed

+41
-32
lines changed

Cargo.toml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,8 @@ edition = "2018"
2727
r2d2 = "^0.8.7"
2828
redis = { version = "^0.21.1", features = ['r2d2'] }
2929
log = "^0.4"
30-
iron = "^0.6.1"
31-
urlencoded = "^0.6"
32-
router = "^0.6"
30+
routerify = "3.0.0"
31+
hyper = "^0.14"
3332
serde = "^1.0"
3433
serde_json = "^1.0"
3534
spaceapi = "^0.8.1"

src/lib.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -188,15 +188,14 @@
188188

189189
pub use spaceapi as api;
190190

191-
pub use iron::error::HttpResult;
192-
pub use iron::Listening;
191+
//pub use iron::error::HttpResult;
192+
//pub use iron::Listening;
193193

194194
mod errors;
195195
pub mod modifiers;
196196
mod sensors;
197197
mod server;
198198
mod types;
199-
200199
pub use crate::errors::SpaceapiServerError;
201200
pub use crate::server::SpaceapiServer;
202201
pub use crate::server::SpaceapiServerBuilder;

src/server/handlers.rs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
//! Handlers for the server.
22
3-
use iron::modifiers::Header;
4-
use iron::prelude::*;
5-
use iron::{headers, middleware, status};
3+
// use iron::modifiers::Header;
4+
// use iron::prelude::*;
5+
// use iron::{headers, middleware, status};
66
use log::{debug, error, info, warn};
7-
use router::Router;
7+
// use router::Router;
88
use serde::ser::{Serialize, SerializeMap, Serializer};
99

1010
use crate::api;
@@ -98,6 +98,7 @@ impl ReadHandler {
9898
}
9999
}
100100

101+
/*
101102
impl middleware::Handler for ReadHandler {
102103
/// Return the current status JSON.
103104
fn handle(&self, req: &mut Request) -> IronResult<Response> {
@@ -120,6 +121,7 @@ impl middleware::Handler for ReadHandler {
120121
Ok(response)
121122
}
122123
}
124+
*/
123125

124126
pub(crate) struct UpdateHandler {
125127
redis_pool: RedisPool,
@@ -147,6 +149,7 @@ impl UpdateHandler {
147149
sensor_spec.set_sensor_value(&self.redis_pool, value)
148150
}
149151

152+
/*
150153
/// Build an OK response with the `HTTP 204 No Content` status code.
151154
fn ok_response(&self) -> Response {
152155
Response::with(status::NoContent)
@@ -176,8 +179,10 @@ impl UpdateHandler {
176179
])))
177180
.set(Header(headers::AccessControlAllowOrigin::Any))
178181
}
182+
*/
179183
}
180184

185+
/*
181186
impl middleware::Handler for UpdateHandler {
182187
/// Update the sensor, return correct status code.
183188
fn handle(&self, req: &mut Request) -> IronResult<Response> {
@@ -226,6 +231,7 @@ impl middleware::Handler for UpdateHandler {
226231
Ok(self.ok_response())
227232
}
228233
}
234+
*/
229235

230236
#[cfg(test)]
231237
mod tests {

src/server/mod.rs

Lines changed: 27 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,14 @@
33
use std::net::ToSocketAddrs;
44
use std::sync::Arc;
55
use std::time::Duration;
6+
use std::convert::Infallible;
7+
use std::error::Error;
68

7-
use iron::Iron;
9+
// use iron::Iron;
810
use log::debug;
911
use redis::{ConnectionInfo, IntoConnectionInfo};
10-
use router::Router;
12+
use hyper::{Body, Request, Response, Server};
13+
use routerify::{Router, RouterService};
1114

1215
use serde_json::map::Map;
1316
use serde_json::Value;
@@ -171,41 +174,43 @@ pub struct SpaceapiServer {
171174

172175
impl SpaceapiServer {
173176
/// Create and return a Router instance.
174-
fn route(self) -> Router {
175-
let mut router = Router::new();
176-
177-
router.get(
178-
"/",
179-
handlers::ReadHandler::new(
180-
self.status.clone(),
181-
self.redis_pool.clone(),
182-
self.sensor_specs.clone(),
183-
self.status_modifiers,
184-
),
185-
"root",
186-
);
187-
188-
router.put(
177+
fn route(self) -> Router<Body, Infallible> {
178+
Router::builder()
179+
/*
180+
.get( "/", handlers::ReadHandler::new(
181+
self.status.clone(),
182+
self.redis_pool.clone(),
183+
self.sensor_specs.clone(),
184+
self.status_modifiers,
185+
)
186+
)
187+
*/
188+
.build()
189+
.unwrap()
190+
/*
191+
.put(
189192
"/sensors/:sensor/",
190193
handlers::UpdateHandler::new(self.redis_pool.clone(), self.sensor_specs),
191194
"sensors",
192-
);
193-
194-
router
195+
)
196+
*/
195197
}
196198

197199
/// Start a HTTP server listening on ``self.host:self.port``.
198200
///
199201
/// The call returns an `HttpResult<Listening>` object, see
200202
/// http://ironframework.io/doc/hyper/server/struct.Listening.html
201203
/// for more information.
202-
pub fn serve<S: ToSocketAddrs>(self, socket_addr: S) -> crate::HttpResult<crate::Listening> {
204+
pub async fn serve<S: ToSocketAddrs>(self, socket_addr: S) -> Result<(), Box<dyn Error>> {
203205
// Launch server process
204206
let router = self.route();
205207
println!("Starting HTTP server on:");
206208
for a in socket_addr.to_socket_addrs()? {
207209
println!("\thttp://{}", a);
208210
}
209-
Iron::new(router).http(socket_addr)
211+
let service = RouterService::new(router).unwrap();
212+
213+
let server = Server::bind(&socket_addr.to_socket_addrs().unwrap().next().unwrap()).serve(service);
214+
Ok(server.await?)
210215
}
211216
}

0 commit comments

Comments
 (0)