1use crate::bindings::vtx::api::vtx_vfs::{self, Buffer, VtxObjectMeta};
4use crate::error::{VtxError, VtxResult};
5use serde::de::DeserializeOwned;
6use serde::Serialize;
7
8use super::stream::BufferExt;
9
10pub type VfsBuffer = Buffer;
12
13pub type VfsObjectMeta = VtxObjectMeta;
15
16pub fn open_uri(uri: &str) -> VtxResult<Buffer> {
18 vtx_vfs::open_uri(uri).map_err(VtxError::from_host_message)
19}
20
21pub fn create_memory_buffer(data: impl AsRef<[u8]>) -> Buffer {
23 vtx_vfs::create_memory_buffer(data.as_ref())
24}
25
26pub fn buffer_from_string(data: &str) -> Buffer {
28 create_memory_buffer(data.as_bytes())
29}
30
31pub fn buffer_from_json<T: Serialize>(data: &T) -> VtxResult<Buffer> {
33 let bytes =
34 serde_json::to_vec(data).map_err(|e| VtxError::SerializationError(e.to_string()))?;
35 Ok(create_memory_buffer(bytes))
36}
37
38pub fn head(uri: &str) -> VtxResult<VtxObjectMeta> {
40 vtx_vfs::head(uri).map_err(VtxError::from_host_message)
41}
42
43pub fn list_objects(prefix_uri: &str) -> VtxResult<Vec<VtxObjectMeta>> {
45 vtx_vfs::list_objects(prefix_uri).map_err(VtxError::from_host_message)
46}
47
48pub fn read_range(uri: &str, offset: u64, len: u64) -> VtxResult<Vec<u8>> {
50 vtx_vfs::read_range(uri, offset, len).map_err(VtxError::from_host_message)
51}
52
53pub fn read_all(uri: &str) -> VtxResult<Vec<u8>> {
55 let buffer = open_uri(uri)?;
56 Ok(buffer.read_all())
57}
58
59pub fn read_to_string(uri: &str) -> VtxResult<String> {
61 let buffer = open_uri(uri)?;
62 buffer.read_to_string()
63}
64
65pub fn read_json<T: DeserializeOwned>(uri: &str) -> VtxResult<T> {
67 let buffer = open_uri(uri)?;
68 buffer.read_json()
69}