diff --git a/.Cargo.toml.swp b/.Cargo.toml.swp new file mode 100644 index 0000000..1e0ac17 Binary files /dev/null and b/.Cargo.toml.swp differ diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3a78405 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +target +Cargo.lock +target diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..3f9c6d2 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "nutone" +version = "0.1.0" +authors = ["Bradlee Speice "] + +[dependencies] +html5ever = "*" +rss = "*" +hyper = "*" +iron = "*" +router = "*" diff --git a/src/bassdrive.rs b/src/bassdrive.rs new file mode 100644 index 0000000..b22753d --- /dev/null +++ b/src/bassdrive.rs @@ -0,0 +1,20 @@ +extern crate hyper; +extern crate rss; + +use rss::Channel; +use std::str::FromStr; + +use broadcast::Broadcaster; + +pub struct BassDrive { + pub url: String +} + +impl BassDrive { +} + +impl Broadcaster for BassDrive { + fn broadcast(&self) -> Channel { + Channel::from_str("").unwrap() + } +} diff --git a/src/broadcast.rs b/src/broadcast.rs new file mode 100644 index 0000000..fa93d44 --- /dev/null +++ b/src/broadcast.rs @@ -0,0 +1,18 @@ +extern crate rss; +extern crate hyper; + +use hyper::server::{Request, Response}; +use rss::Channel; + +pub trait Broadcaster { + fn broadcast(&self) -> Channel; +} + +#[allow(unused)] +pub fn build_broadcast(b: T) -> Box { + let channel = b.broadcast(); + + Box::new(move |_: Request, res: Response| { + res.send(channel.to_string().as_bytes()); + }) +} diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..98425a0 --- /dev/null +++ b/src/main.rs @@ -0,0 +1,31 @@ +extern crate iron; +extern crate router; + +use iron::Handler; +use iron::status; +use iron::IronResult; +use iron::Response; +use iron::Request; +use iron::Iron; +use router::Router; + +struct EchoHandler { + message: String +} + +impl Handler for EchoHandler { + fn handle(&self, _: &mut Request) -> IronResult { + Ok(Response::with((status::Ok, self.message.clone()))) + } +} + +fn main() { + let echo = EchoHandler { + message: "FINALLY ARE YOU FREAKING KIDDING ME".to_string() + }; + + let mut router = Router::new(); + router.get("/", echo, "index"); + + Iron::new(router).http("localhost:3000").unwrap(); +} diff --git a/src/main_hyper.rs.bak b/src/main_hyper.rs.bak new file mode 100644 index 0000000..2de7b09 --- /dev/null +++ b/src/main_hyper.rs.bak @@ -0,0 +1,47 @@ +extern crate hyper; +extern crate reroute; +extern crate rss; + +use hyper::server::{Server, Request, Response, Handler}; +use reroute::{Router, Captures}; + +mod broadcast; +mod bassdrive; + +#[allow(unused)] +fn http_404(req: Request, res: Response) { + res.send(format!("Couldn't find URL: {}", req.uri).as_bytes()); +} + +struct EchoHandler { + response: String +} + +impl EchoHandler { + fn handle(&self, _: Request, res: Response, _: Captures) { + res.send(self.response.as_bytes()); + } +} + + +#[allow(unused)] +fn main() { + let mut router = Router::new(); + + let echo = EchoHandler { + response: "Hello, world!".to_string() + }; + router.get(r"/hello", echo); + + /* + router.get(r"/hello", build_broadcast( + BassDrive { + url: "http://archives.bassdrivearchive.com/6%20-%20Saturday/Electronic%20Warfare%20-%20The%20Overfiend/" + }) + ); + */ + router.add_not_found(http_404); + router.finalize().unwrap(); + + Server::http("0.0.0.0:3000").unwrap().handle(router).unwrap(); +}