tiles_proxy/
tile_request.rs1use std::path::Path;
4use std::path::PathBuf;
5use std::str::FromStr;
6
7pub trait TileRequest: Send + Sync {
8 fn dirpath(&self, base_dir: &str) -> PathBuf;
9 fn filepath(&self, base_dir: &str) -> PathBuf;
10 fn get_alias(&self) -> &str;
11}
12
13#[derive(Debug, PartialEq, FromForm)]
14pub struct WmtsRequest {
15 #[field(default = "")]
16 pub alias: String,
17 #[field(default = None)]
18 pub layer: String,
19 #[field(default = None)]
20 pub style: String,
21 #[field(default = None)]
22 pub tilematrixset: String,
23 #[field(name = "Service", default = None)]
24 pub service: String,
25 #[field(name = "Request", default = None)]
26 pub request: String,
27 #[field(name = "Version", default = None)]
28 pub version: String,
29 #[field(name = "Format", default = None)]
30 pub format: String,
31 #[field(name = "TileMatrix", default = None)]
32 pub tile_matrix: String,
33 #[field(name = "TileCol", default = None)]
34 pub tile_col: String,
35 #[field(name = "TileRow", default = None)]
36 pub tile_row: String,
37}
38
39impl WmtsRequest {
40 pub fn with_alias(&self, alias: &str) -> Self {
41 WmtsRequest {
42 alias: String::from_str(alias).expect(""),
43 layer: String::from(self.layer.as_str()),
44 style: String::from(self.style.as_str()),
45 tilematrixset: String::from(self.tilematrixset.as_str()),
46 service: String::from(self.service.as_str()),
47 request: String::from(self.request.as_str()),
48 version: String::from(self.version.as_str()),
49 format: String::from(self.format.as_str()),
50 tile_matrix: String::from(self.tile_matrix.as_str()),
51 tile_col: String::from(self.tile_col.as_str()),
52 tile_row: String::from(self.tile_row.as_str()),
53 }
54 }
55}
56
57impl TileRequest for WmtsRequest {
58 fn dirpath(&self, base_dir: &str) -> PathBuf {
59 Path::new(base_dir)
60 .join(self.get_alias())
61 .join(self.layer.as_str())
62 .join(self.style.as_str())
63 .join(self.tilematrixset.as_str())
64 .join(self.service.as_str())
65 .join(self.request.as_str())
66 .join(self.version.as_str())
67 .join(self.format.as_str())
68 .join(self.tile_matrix.as_str())
69 .join(self.tile_col.as_str())
70 }
71 fn filepath(&self, base_dir: &str) -> PathBuf {
72 self.dirpath(base_dir).join(self.tile_row.as_str())
73 }
74 fn get_alias(&self) -> &str {
75 self.alias.as_str()
76 }
77}
78
79pub struct XyzRequest {
80 pub alias: String,
81 pub a: String,
82 pub x: String,
83 pub y: String,
84 pub z: String,
85}
86
87impl XyzRequest {
88 pub fn new(alias: &str, a: &str, x: &str, y: &str, z: &str) -> Self {
89 XyzRequest {
90 alias: String::from_str(alias).expect(""),
91 a: String::from_str(a).expect(""),
92 x: String::from_str(x).expect(""),
93 y: String::from_str(y).expect(""),
94 z: String::from_str(z).expect(""),
95 }
96 }
97}
98impl TileRequest for XyzRequest {
99 fn dirpath(&self, base_dir: &str) -> PathBuf {
100 Path::new(base_dir)
101 .join(self.get_alias())
102 .join(self.a.as_str())
103 .join(self.x.as_str())
104 .join(self.y.as_str())
105 }
106 fn filepath(&self, base_dir: &str) -> PathBuf {
107 self.dirpath(base_dir).join(self.z.as_str())
108 }
109 fn get_alias(&self) -> &str {
110 self.alias.as_str()
111 }
112}