server: add date-modified to datasets

This commit is contained in:
k
2024-09-18 17:58:33 +02:00
parent 9b4e166608
commit 41638d10bf
6 changed files with 35 additions and 24 deletions

View File

@@ -95,21 +95,27 @@ fn _dataset_handler(
Kind::Date => {
let datasets = DateMap::<usize>::_read_dir(&route.file_path, &route.serialization);
process_datasets(headers, kind, &mut chunk, &mut route, query, datasets)?;
process_datasets(&headers, kind, &mut chunk, &mut route, query, datasets)?;
}
Kind::Height => {
let datasets =
HeightMap::<usize>::_read_dir(&route.file_path, &route.serialization);
process_datasets(headers, kind, &mut chunk, &mut route, query, datasets)?;
process_datasets(&headers, kind, &mut chunk, &mut route, query, datasets)?;
}
_ => panic!(),
};
}
let (date, response) = headers.check_if_modified_since(&route.file_path).unwrap();
if let Some(response) = response {
return Ok(response);
}
let type_name = route.values_type.split("::").last().unwrap();
let value = match type_name {
let mut response = match type_name {
"u8" => typed_value_to_response::<u8>(kind, &route, chunk)?,
"u16" => typed_value_to_response::<u16>(kind, &route, chunk)?,
"u32" => typed_value_to_response::<u32>(kind, &route, chunk)?,
@@ -123,7 +129,10 @@ fn _dataset_handler(
_ => panic!("Incompatible type: {type_name}"),
};
Ok(value)
let headers = response.headers_mut();
headers.insert_last_modified(date);
Ok(response)
}
fn replace_dash_by_underscore(s: &str) -> String {
@@ -131,7 +140,7 @@ fn replace_dash_by_underscore(s: &str) -> String {
}
fn process_datasets<ChunkId>(
headers: HeaderMap,
headers: &HeaderMap,
kind: Kind,
chunk: &mut Option<Chunk>,
route: &mut Route,
@@ -159,7 +168,7 @@ where
let path = path.unwrap();
route.file_path = path.to_str().unwrap().to_string();
route.file_path = path.clone();
let offset = match kind {
Kind::Date => 1,

View File

@@ -1,7 +1,7 @@
use std::{
collections::{BTreeMap, HashMap},
fs,
path::Path,
path::{Path, PathBuf},
};
use derive_deref::{Deref, DerefMut};
@@ -15,7 +15,7 @@ use super::Paths;
#[derive(Clone, Debug)]
pub struct Route {
pub url_path: String,
pub file_path: String,
pub file_path: PathBuf,
pub values_type: String,
pub serialization: Serialization,
}
@@ -52,7 +52,7 @@ impl Routes {
let url_path = split_key.iter().join("-");
let file_path = key.to_owned();
let file_path = PathBuf::from(key.to_owned());
let values_type = value.to_owned();
if last == "date" {