shardline-server 1.0.0

HTTP server boundary, runtime, and operator workflows for Shardline.
Documentation
#[cfg(test)]
mod tests {
    use std::fs::metadata;
    #[cfg(unix)]
    use std::os::unix::fs::PermissionsExt;

    #[cfg(unix)]
    use shardline_storage::anchored_fs::{
        AnchoredPathOptions, open_anchored_target as open_anchored_target_shared,
        write_anchored_temporary_file as write_anchored_temporary_file_shared,
    };
    #[cfg(unix)]
    use std::{fs::rename, io, path::Path};

    #[cfg(unix)]
    const LOCAL_DIRECTORY_MODE: u32 = 0o700;
    #[cfg(unix)]
    const LOCAL_FILE_MODE: u32 = 0o600;

    #[cfg(unix)]
    fn anchored_path_options() -> AnchoredPathOptions {
        AnchoredPathOptions::new(Some(LOCAL_DIRECTORY_MODE), Some(LOCAL_FILE_MODE))
    }

    #[cfg(unix)]
    fn write_file_atomically(root: &Path, path: &Path, bytes: &[u8]) -> io::Result<()> {
        use shardline_storage::anchored_fs::remove_if_present;

        let anchored = open_anchored_target_shared(root, path, anchored_path_options(), || {
            io::Error::new(
                io::ErrorKind::InvalidData,
                "local filesystem path must remain under the configured root",
            )
        })?;
        let temporary = write_anchored_temporary_file_shared(
            &anchored,
            bytes,
            anchored_path_options().file_mode,
        )?;
        let final_path = anchored.final_path();
        match rename(&temporary, &final_path) {
            Ok(()) => {}
            Err(error) => {
                remove_if_present(&temporary)?;
                return Err(error);
            }
        }

        Ok(())
    }

    #[cfg(unix)]
    #[test]
    fn write_file_atomically_creates_private_file_and_directory_modes() {
        let sandbox = tempfile::tempdir();
        assert!(sandbox.is_ok());
        let Ok(sandbox) = sandbox else {
            return;
        };
        let root = sandbox.path().join("root");
        let path = root.join("nested").join("record.json");

        let wrote = write_file_atomically(&root, &path, br#"{"ok":true}"#);
        assert!(wrote.is_ok());

        let file_metadata = metadata(&path);
        assert!(file_metadata.is_ok());
        let Ok(file_metadata) = file_metadata else {
            return;
        };
        let directory_metadata = metadata(root.join("nested"));
        assert!(directory_metadata.is_ok());
        let Ok(directory_metadata) = directory_metadata else {
            return;
        };

        assert_eq!(file_metadata.permissions().mode() & 0o777, 0o600);
        assert_eq!(directory_metadata.permissions().mode() & 0o777, 0o700);
    }
}