feat: implement RFS client with authentication and file management APIs
This commit is contained in:
40
examples/rfsclient/auth_and_upload.rhai
Normal file
40
examples/rfsclient/auth_and_upload.rhai
Normal file
@@ -0,0 +1,40 @@
|
||||
// RFS Client: Auth + Upload + Download example
|
||||
// Prereqs:
|
||||
// - RFS server reachable at RFS_BASE_URL
|
||||
// - Valid credentials in env: RFS_USER, RFS_PASS
|
||||
// - Run with herodo so the SAL Rhai modules are registered
|
||||
|
||||
let BASE_URL = env_get("RFS_BASE_URL");
|
||||
let USER = env_get("RFS_USER");
|
||||
let PASS = env_get("RFS_PASS");
|
||||
let TIMEOUT = 30; // seconds
|
||||
|
||||
if BASE_URL == null || BASE_URL == "" { throw "Set RFS_BASE_URL in your environment"; }
|
||||
if USER == null || PASS == null { throw "Set RFS_USER and RFS_PASS in your environment"; }
|
||||
|
||||
// Create client
|
||||
let ok = rfs_create_client(BASE_URL, USER, PASS, TIMEOUT);
|
||||
if !ok { throw "Failed to create RFS client"; }
|
||||
|
||||
// Optional health check
|
||||
let health = rfs_health_check();
|
||||
print(`RFS health: ${health}`);
|
||||
|
||||
// Authenticate (required for some operations)
|
||||
let auth_ok = rfs_authenticate();
|
||||
if !auth_ok { throw "Authentication failed"; }
|
||||
|
||||
// Upload a local file
|
||||
let local_file = "/tmp/rfs_example.txt";
|
||||
os_write_file(local_file, "hello rfs");
|
||||
let hash = rfs_upload_file(local_file);
|
||||
print(`Uploaded file hash: ${hash}`);
|
||||
|
||||
// Download it back
|
||||
let out_path = "/tmp/rfs_example_out.txt";
|
||||
let dl_ok = rfs_download_file(hash, out_path);
|
||||
if !dl_ok { throw "Download failed"; }
|
||||
|
||||
print(`Downloaded to: ${out_path}`);
|
||||
|
||||
true
|
Reference in New Issue
Block a user