• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

ka7eh / rust-mbtileserver / 6

pending completion
6

push

travis-ci-com

ka7eh
Add disable-preview arg

413 of 557 relevant lines covered (74.15%)

2.21 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
src/main.rs
1
//! # rust-mbtileserver
×
2
//!
3
//! A simple Rust-based server for map tiles stored in mbtiles format.
4
//!
5
//! ## Usage
6
//!
7
//! Run `mbtileserver --help` for a list and description of the available flags:
8
//!
9
//! ```
10
//! mbtileserver 0.1.4
11
//! A simple mbtile server
12
//!
13
//! USAGE:
14
//!     mbtileserver [FLAGS] [OPTIONS]
15
//!
16
//! FLAGS:
17
//!         --disable-preview    Disable preview map
18
//!     -h, --help               Prints help information
19
//!     -V, --version            Prints version information
20
//!
21
//! OPTIONS:
22
//!     -d, --directory <directory>    Tiles directory [default: ./tiles]
23
//!     -p, --port <port>              Port [default: 3000]
24
//!
25
//! ```
26
//!
27
//! Run `mbtileserver` to start serving the mbtiles in a given folder. The default folder is `./tiles` and you can change it with `-d` flag.
28
//! The server starts on port 3000 by default. You can use a different port via `-p` flag.
29
//!
30
//! ### Endpoints
31
//!
32
//! | Endpoint                                                    | Description                                                                    |
33
//! |-------------------------------------------------------------|--------------------------------------------------------------------------------|
34
//! | /services                                                   | lists all discovered and valid mbtiles in the tiles directory                  |
35
//! | /services/<path-to-tileset>                                 | shows tileset metadata                                                         |
36
//! | /services/<path-to-tileset>/map                             | tileset preview                                                                |
37
//! | /services/<path-to-tileset>/tiles/{z}/{x}/{y}.<tile-format> | returns tileset tile at the given x, y, and z                                  |
38
//! | /services/<path-to-tileset>/tiles/{z}/{x}/{y}.json          | returns UTFGrid data at the given x, y, and z (only for tilesets with UTFGrid) |
39

40
extern crate clap;
41
extern crate flate2;
42
extern crate hyper;
43
#[macro_use]
44
extern crate lazy_static;
45
extern crate r2d2;
46
extern crate r2d2_sqlite;
47
extern crate regex;
48
extern crate serde;
49
extern crate serde_json;
50

51
use hyper::service::{make_service_fn, service_fn};
52
use hyper::Server;
53
use std::process;
54

55
mod config;
56
mod errors;
57
mod service;
58
mod tiles;
59
mod utils;
60

61
#[tokio::main]
×
62
async fn main() {
63
    pretty_env_logger::init();
×
64

65
    let args = match config::parse() {
×
66
        Ok(args) => args,
×
67
        Err(err) => {
×
68
            println!("{}", err);
×
69
            process::exit(1)
×
70
        }
71
    };
×
72

73
    println!("Serving tiles from {}", args.directory.display());
×
74

75
    let tilesets = tiles::discover_tilesets(String::new(), args.directory);
×
76

77
    let addr = ([0, 0, 0, 0], args.port).into();
×
78

79
    let disable_preview = args.disable_preview;
×
80

81
    let make_service = make_service_fn(move |_conn| {
×
82
        let tilesets = tilesets.clone();
×
83
        async move {
×
84
            Ok::<_, hyper::Error>(service_fn(move |req| {
×
85
                service::get_service(req, tilesets.clone(), disable_preview)
×
86
            }))
×
87
        }
×
88
    });
×
89

90
    let server = match Server::try_bind(&addr) {
×
91
        Ok(builder) => builder.serve(make_service),
×
92
        Err(err) => {
×
93
            println!("{}", err);
×
94
            process::exit(1);
×
95
        }
96
    };
×
97

98
    println!("Listening on http://{}", addr);
×
99

100
    if let Err(e) = server.await {
×
101
        eprintln!("server error: {}", e);
×
102
    }
×
103
}
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc