xnode_manager_sdk/file/
handlers.rs1use crate::{
2 file::models::{
3 CreateDirectory, Directory, File, ReadDirectory, ReadFile, RemoveDirectory, RemoveFile,
4 WriteFile,
5 },
6 utils::{
7 Empty, SessionGetInput, SessionGetOutput, SessionPostInput, SessionPostOutput, session_get,
8 session_post,
9 },
10};
11
12pub fn scope() -> String {
13 "/file".to_string()
14}
15
16#[derive(Debug, Clone, PartialEq)]
17pub struct ReadFilePath {
18 pub scope: String,
19}
20pub type ReadFileInput<'a> = SessionGetInput<'a, ReadFilePath, ReadFile>;
21pub type ReadFileOutput = File;
22pub async fn read_file(input: ReadFileInput<'_>) -> SessionGetOutput<ReadFileOutput> {
23 session_get(input, scope(), |path| {
24 format!("/{scope}/read_file", scope = path.scope)
25 })
26 .await
27}
28
29#[derive(Debug, Clone, PartialEq)]
30pub struct WriteFilePath {
31 pub scope: String,
32}
33pub type WriteFileInput<'a> = SessionPostInput<'a, WriteFilePath, WriteFile>;
34pub type WriteFileOutput = Empty;
35pub async fn write_file(input: WriteFileInput<'_>) -> SessionPostOutput<WriteFileOutput> {
36 session_post(input, scope(), |path| {
37 format!("/{scope}/write_file", scope = path.scope)
38 })
39 .await
40}
41
42#[derive(Debug, Clone, PartialEq)]
43pub struct RemoveFilePath {
44 pub scope: String,
45}
46pub type RemoveFileInput<'a> = SessionPostInput<'a, RemoveFilePath, RemoveFile>;
47pub type RemoveFileOutput = Empty;
48pub async fn remove_file(input: RemoveFileInput<'_>) -> SessionPostOutput<RemoveFileOutput> {
49 session_post(input, scope(), |path| {
50 format!("/{scope}/remove_file", scope = path.scope)
51 })
52 .await
53}
54
55#[derive(Debug, Clone, PartialEq)]
56pub struct ReadDirectoryPath {
57 pub scope: String,
58}
59pub type ReadDirectoryInput<'a> = SessionGetInput<'a, ReadDirectoryPath, ReadDirectory>;
60pub type ReadDirectoryOutput = Directory;
61pub async fn read_directory(
62 input: ReadDirectoryInput<'_>,
63) -> SessionGetOutput<ReadDirectoryOutput> {
64 session_get(input, scope(), |path| {
65 format!("/{scope}/read_directory", scope = path.scope)
66 })
67 .await
68}
69
70#[derive(Debug, Clone, PartialEq)]
71pub struct CreateDirectoryPath {
72 pub scope: String,
73}
74pub type CreateDirectoryInput<'a> = SessionPostInput<'a, CreateDirectoryPath, CreateDirectory>;
75pub type CreateDirectoryOutput = Empty;
76pub async fn create_directory(
77 input: CreateDirectoryInput<'_>,
78) -> SessionPostOutput<CreateDirectoryOutput> {
79 session_post(input, scope(), |path| {
80 format!("/{scope}/create_directory", scope = path.scope)
81 })
82 .await
83}
84
85#[derive(Debug, Clone, PartialEq)]
86pub struct RemoveDirectoryPath {
87 pub scope: String,
88}
89pub type RemoveDirectoryInput<'a> = SessionPostInput<'a, RemoveDirectoryPath, RemoveDirectory>;
90pub type RemoveDirectoryOutput = Empty;
91pub async fn remove_directory(
92 input: RemoveDirectoryInput<'_>,
93) -> SessionPostOutput<RemoveDirectoryOutput> {
94 session_post(input, scope(), |path| {
95 format!("/{scope}/remove_directory", scope = path.scope)
96 })
97 .await
98}