http-fs 0.2.0

HTTP File Service library
Documentation

http-fs

Build Crates.io Documentation dependency status

Features

  • actix - Enables actix-web integration.
  • hyper - Enables hyper integration.

Usage

Actix

use http_fs::config::{self, StaticFileConfig};
use http_fs::{StaticFiles};

use std::path::Path;

pub struct DirectoryConfig;
impl StaticFileConfig for DirectoryConfig {
    type FileService = config::DefaultConfig;
    type DirService = config::DefaultConfig;

    fn handle_directory(&self, _path: &Path) -> bool {
        true
    }
}

fn main() {
    actix_web::server::new(|| actix_web::App::new().handler("/", StaticFiles::new(DirectoryConfig)).finish()).bind("127.0.0.1:8080").unwrap().run();
}

Hyper

use http_fs::config::{self, StaticFileConfig};
use http_fs::{StaticFiles};
use futures::Future;

use std::path::Path;

pub struct DirectoryConfig;
impl StaticFileConfig for DirectoryConfig {
    type FileService = config::DefaultConfig;
    type DirService = config::DefaultConfig;

    fn handle_directory(&self, _path: &Path) -> bool {
        true
    }
}

fn main() {
    let addr = ([127, 0, 0, 1], 3000).into();
    let static_files: http_fs::hyper::HyperStaticFiles<_> = StaticFiles::new(DirectoryConfig).into();
    //Hyper is retarded with its Service and MakeService traits
    let new_service = move || static_files.make_service();

    let server = hyper::Server::bind(&addr).serve(new_service).map_err(|e| eprintln!("server error: {}", e));

    println!("Listening on http://{}", addr);
    hyper::rt::run(server);
}