mirror of
https://github.com/fluencelabs/examples
synced 2025-04-25 10:42:16 +00:00
put/get updates
This commit is contained in:
parent
cdec8be7ae
commit
c1f3035c8a
@ -1,4 +1,12 @@
|
|||||||
|
data GetResult:
|
||||||
|
stdout: []u8
|
||||||
|
stderr: string
|
||||||
|
|
||||||
|
data PutResult:
|
||||||
|
stdout: string
|
||||||
|
stderr: string
|
||||||
|
|
||||||
service UrlDownloader("url_downloader"):
|
service UrlDownloader("url_downloader"):
|
||||||
get(file_name: string) -> []u8
|
get(file_name: string) -> GetResult
|
||||||
get_n_save(url: string, file_name: string) -> string
|
get_n_save(url: string, file_name: string) -> PutResult
|
||||||
put(file_name: string, file_content: []u8) -> string
|
put(file_name: string, file_content: []u8) -> PutResult
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
data GetWorkersInfoDealsDefaultWorker:
|
data GetWorkersInfoDealsDefaultWorker:
|
||||||
definition: string
|
|
||||||
timestamp: string
|
timestamp: string
|
||||||
dealIdOriginal: string
|
definition: string
|
||||||
dealId: string
|
|
||||||
chainNetwork: string
|
chainNetwork: string
|
||||||
chainNetworkId: u64
|
chainNetworkId: u64
|
||||||
|
dealIdOriginal: string
|
||||||
|
dealId: string
|
||||||
|
|
||||||
data GetWorkersInfoDeals:
|
data GetWorkersInfoDeals:
|
||||||
defaultWorker: GetWorkersInfoDealsDefaultWorker
|
defaultWorker: GetWorkersInfoDealsDefaultWorker
|
||||||
@ -28,4 +28,4 @@ data GetWorkersInfo:
|
|||||||
hosts: GetWorkersInfoHosts
|
hosts: GetWorkersInfoHosts
|
||||||
|
|
||||||
func getWorkersInfo() -> GetWorkersInfo:
|
func getWorkersInfo() -> GetWorkersInfo:
|
||||||
<- GetWorkersInfo(deals=GetWorkersInfoDeals(defaultWorker=GetWorkersInfoDealsDefaultWorker(definition="bafkreicdordcic2qmd2pnacl5adffsuhwg4eleu4prcgaldjvzr6ds2f2m",timestamp="2023-04-23T07:01:18.682Z",dealIdOriginal="0x9d7503E13Bc2d3430536e3d5D635D8172141d884",dealId="9d7503e13bc2d3430536e3d5d635d8172141d884",chainNetwork="testnet",chainNetworkId=1313161555)),hosts=GetWorkersInfoHosts(defaultWorker=GetWorkersInfoHostsDefaultWorker(definition="bafkreicdordcic2qmd2pnacl5adffsuhwg4eleu4prcgaldjvzr6ds2f2m",installationSpells=[GetWorkersInfoHostsDefaultWorkerInstallationSpells(hostId="12D3KooWJ4bTHirdTFNZpCS72TAzwtdmavTBkkEXtzo6wHL25CtE",spellId="039f4e06-923e-4a21-8814-8164fa9b137c",workerId="12D3KooWKsxVXgnpL4wrTts9d49jiNSEN1auaxotdMYa4HpFS66g")],timestamp="2023-04-23T07:00:05.549Z",relayId="12D3KooWAKNos2KogexTXhrkMZzFYpLHuWJ4PgoAhurSAv7o5CWA")))
|
<- GetWorkersInfo(deals=GetWorkersInfoDeals(defaultWorker=GetWorkersInfoDealsDefaultWorker(timestamp="2023-04-24T00:18:54.042Z",definition="bafkreifh4vhq5kqpkbhaxmb4iuzg7rr33oxjvksxmarwkekotj26u2vsju",chainNetwork="testnet",chainNetworkId=1313161555,dealIdOriginal="0x9d7503E13Bc2d3430536e3d5D635D8172141d884",dealId="9d7503e13bc2d3430536e3d5d635d8172141d884")),hosts=GetWorkersInfoHosts(defaultWorker=GetWorkersInfoHostsDefaultWorker(definition="bafkreifh4vhq5kqpkbhaxmb4iuzg7rr33oxjvksxmarwkekotj26u2vsju",installationSpells=[GetWorkersInfoHostsDefaultWorkerInstallationSpells(hostId="12D3KooWJ4bTHirdTFNZpCS72TAzwtdmavTBkkEXtzo6wHL25CtE",spellId="039f4e06-923e-4a21-8814-8164fa9b137c",workerId="12D3KooWKsxVXgnpL4wrTts9d49jiNSEN1auaxotdMYa4HpFS66g")],timestamp="2023-04-23T23:47:35.550Z",relayId="12D3KooWMigkP4jkVyufq5JnDJL6nXvyjeaDNpRfEZqQhsG3sYCU")))
|
||||||
|
@ -7,17 +7,17 @@
|
|||||||
version: 0
|
version: 0
|
||||||
hosts:
|
hosts:
|
||||||
defaultWorker:
|
defaultWorker:
|
||||||
definition: bafkreicdordcic2qmd2pnacl5adffsuhwg4eleu4prcgaldjvzr6ds2f2m
|
definition: bafkreifh4vhq5kqpkbhaxmb4iuzg7rr33oxjvksxmarwkekotj26u2vsju
|
||||||
installation_spells:
|
installation_spells:
|
||||||
- host_id: 12D3KooWJ4bTHirdTFNZpCS72TAzwtdmavTBkkEXtzo6wHL25CtE
|
- host_id: 12D3KooWJ4bTHirdTFNZpCS72TAzwtdmavTBkkEXtzo6wHL25CtE
|
||||||
spell_id: 039f4e06-923e-4a21-8814-8164fa9b137c
|
spell_id: 039f4e06-923e-4a21-8814-8164fa9b137c
|
||||||
worker_id: 12D3KooWKsxVXgnpL4wrTts9d49jiNSEN1auaxotdMYa4HpFS66g
|
worker_id: 12D3KooWKsxVXgnpL4wrTts9d49jiNSEN1auaxotdMYa4HpFS66g
|
||||||
timestamp: 2023-04-23T07:00:05.549Z
|
timestamp: 2023-04-23T23:47:35.550Z
|
||||||
relayId: 12D3KooWAKNos2KogexTXhrkMZzFYpLHuWJ4PgoAhurSAv7o5CWA
|
relayId: 12D3KooWMigkP4jkVyufq5JnDJL6nXvyjeaDNpRfEZqQhsG3sYCU
|
||||||
deals:
|
deals:
|
||||||
defaultWorker:
|
defaultWorker:
|
||||||
definition: bafkreicdordcic2qmd2pnacl5adffsuhwg4eleu4prcgaldjvzr6ds2f2m
|
definition: bafkreifh4vhq5kqpkbhaxmb4iuzg7rr33oxjvksxmarwkekotj26u2vsju
|
||||||
timestamp: 2023-04-23T07:01:18.682Z
|
timestamp: 2023-04-24T00:18:54.042Z
|
||||||
dealIdOriginal: "0x9d7503E13Bc2d3430536e3d5D635D8172141d884"
|
dealIdOriginal: "0x9d7503E13Bc2d3430536e3d5D635D8172141d884"
|
||||||
dealId: 9d7503e13bc2d3430536e3d5d635d8172141d884
|
dealId: 9d7503e13bc2d3430536e3d5d635d8172141d884
|
||||||
chainNetwork: testnet
|
chainNetwork: testnet
|
||||||
|
@ -10,26 +10,51 @@ pub fn main() {
|
|||||||
WasmLoggerBuilder::new().build().unwrap();
|
WasmLoggerBuilder::new().build().unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#[marine]
|
||||||
|
pub struct PutResult {
|
||||||
|
stdout: String,
|
||||||
|
stderr: String,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[marine]
|
||||||
|
pub struct GetResult {
|
||||||
|
stdout: Vec<u8>,
|
||||||
|
stderr: String,
|
||||||
|
}
|
||||||
|
|
||||||
/// Combining of modules: `curl` and `local_storage`.
|
/// Combining of modules: `curl` and `local_storage`.
|
||||||
/// Calls `curl` and stores returned result into a file.
|
/// Calls `curl` and stores returned result into a file.
|
||||||
#[marine]
|
#[marine]
|
||||||
pub fn get_n_save(url: String, file_name: String) -> String {
|
pub fn get_n_save(url: String, file_name: String) -> PutResult {
|
||||||
log::info!("get_n_save called with {} {}\n", url, file_name);
|
log::info!("get_n_save called with {} {}\n", url, file_name);
|
||||||
|
|
||||||
let result = download(url);
|
let result = download(url);
|
||||||
file_put(file_name, result.into_bytes());
|
put(file_name, result.into_bytes())
|
||||||
|
|
||||||
String::from("Ok")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[marine]
|
#[marine]
|
||||||
pub fn put(file_name: String, file_content: Vec<u8>) -> String {
|
pub fn put(file_name: String, file_content: Vec<u8>) -> PutResult {
|
||||||
file_put(file_name, file_content)
|
let res = file_put(file_name, file_content);
|
||||||
|
|
||||||
|
if res == String::from("Ok") {
|
||||||
|
PutResult { stdout: res, stderr: String::from("")}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
PutResult { stdout: String::from(""), stderr: res}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[marine]
|
#[marine]
|
||||||
pub fn get(file_name: String) -> Vec<u8> {
|
pub fn get(file_name: String) -> GetResult {
|
||||||
file_get(file_name)
|
let res = file_get(file_name);
|
||||||
|
|
||||||
|
if res == b"error while reading file" {
|
||||||
|
GetResult { stdout: vec!(), stderr: String::from_utf8(res).unwrap()}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
GetResult { stdout: res, stderr: String::from("")}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Importing `curl` module
|
/// Importing `curl` module
|
||||||
|
@ -6,54 +6,78 @@ import "@fluencelabs/spell/spell_service.aqua"
|
|||||||
import "workers.aqua"
|
import "workers.aqua"
|
||||||
import "services.aqua"
|
import "services.aqua"
|
||||||
|
|
||||||
export put, get
|
export put, get_with_ids, get_without_ids, get_bad
|
||||||
export put_workers, get_workers, get_and_save_workers
|
export put_workers, get_workers, get_and_save_workers
|
||||||
|
|
||||||
|
-- functions to interact with deal deployed services
|
||||||
func getWorkers() -> []Record:
|
func getWorkers() -> []Record:
|
||||||
workersInfo <- getWorkersInfo()
|
workersInfo <- getWorkersInfo()
|
||||||
dealId = workersInfo.deals.defaultWorker.dealId
|
dealId = workersInfo.deals.defaultWorker.dealId
|
||||||
workersOp <- resolveSubnetwork(dealId)
|
workersOp <- resolveSubnetwork(dealId)
|
||||||
<- workersOp!
|
<- workersOp!
|
||||||
|
|
||||||
func put(file_name: string, file_content: []u8) -> string:
|
func put(file_name: string, file_content: []u8) -> PutResult, string, string:
|
||||||
workers <- getWorkers()
|
workers <- getWorkers()
|
||||||
w = workers[0]
|
w = workers[5]
|
||||||
on w.metadata.peer_id via w.metadata.relay_id:
|
on w.metadata.peer_id via w.metadata.relay_id:
|
||||||
res <- UrlDownloader.put(file_name, file_content)
|
res <- UrlDownloader.put(file_name, file_content)
|
||||||
|
<- res, w.metadata.peer_id, w.metadata.relay_id!
|
||||||
|
|
||||||
|
func get_without_ids(file_name: string) -> [][]u8:
|
||||||
|
result: *[]u8
|
||||||
|
workers <- getWorkers()
|
||||||
|
for w <- workers par:
|
||||||
|
on w.metadata.peer_id via w.metadata.relay_id:
|
||||||
|
res <- UrlDownloader.get(file_name)
|
||||||
|
-- if res.stderr == "":
|
||||||
|
-- result <<- res.stdout
|
||||||
|
-- else:
|
||||||
|
-- result <<- []
|
||||||
|
result <<- res.stdout
|
||||||
|
par Peer.timeout(10000, "Finding file timed out.")
|
||||||
|
join result[workers.length - 1]
|
||||||
|
<- result
|
||||||
|
|
||||||
|
func get_with_ids(file_name: string, peer_id: string, relay_id: string) -> GetResult:
|
||||||
|
on peer_id via relay_id:
|
||||||
|
res <- UrlDownloader.get(file_name)
|
||||||
<- res
|
<- res
|
||||||
|
|
||||||
|
func get_bad(file_name: string) -> GetResult:
|
||||||
func get(file_name: string) -> []u8:
|
|
||||||
workers <- getWorkers()
|
workers <- getWorkers()
|
||||||
w = workers[0]
|
w = workers[0]
|
||||||
on w.metadata.peer_id via w.metadata.relay_id:
|
on w.metadata.peer_id via w.metadata.relay_id:
|
||||||
res <- UrlDownloader.get(file_name)
|
res <- UrlDownloader.get(file_name)
|
||||||
<- res
|
<- res
|
||||||
|
|
||||||
func get_and_save(url: string, fname: string) -> string:
|
func get_and_save(url: string, fname: string) -> PutResult:
|
||||||
workers <- getWorkers()
|
workers <- getWorkers()
|
||||||
w = workers[0]
|
w = workers[0]
|
||||||
on w.metadata.peer_id via w.metadata.relay_id:
|
on w.metadata.peer_id via w.metadata.relay_id:
|
||||||
res = UrlDownloader.get_n_save(url, fname)
|
res = UrlDownloader.get_n_save(url, fname)
|
||||||
<- res
|
<- res
|
||||||
|
|
||||||
func put_workers(file_name: string, file_content: []u8) -> string:
|
-- functions to interact with workers deployed service
|
||||||
|
func put_workers(file_name: string, file_content: []u8) -> PutResult:
|
||||||
info <- getWorkersInfo()
|
info <- getWorkersInfo()
|
||||||
spell = info.hosts.defaultWorker.installationSpells[0]
|
spell = info.hosts.defaultWorker.installationSpells[0]
|
||||||
on spell.workerId via spell.hostId:
|
on spell.workerId via spell.hostId:
|
||||||
res <- UrlDownloader.put(file_name, file_content)
|
res <- UrlDownloader.put(file_name, file_content)
|
||||||
<- res
|
<- res
|
||||||
|
|
||||||
|
--func get_workers(file_name: string) -> GetResult:
|
||||||
func get_workers(file_name: string) -> []u8:
|
func get_workers(file_name: string) -> []u8:
|
||||||
info <- getWorkersInfo()
|
info <- getWorkersInfo()
|
||||||
spell = info.hosts.defaultWorker.installationSpells[0]
|
spell = info.hosts.defaultWorker.installationSpells[0]
|
||||||
on spell.workerId via spell.hostId:
|
on spell.workerId via spell.hostId:
|
||||||
res <- UrlDownloader.get(file_name)
|
res <- UrlDownloader.get(file_name)
|
||||||
<- res
|
--<- res
|
||||||
|
<- res.stdout
|
||||||
|
|
||||||
func get_and_save_workers(url: string, fname: string) -> string:
|
func get_and_save_workers(url: string, fname: string) -> PutResult:
|
||||||
info <- getWorkersInfo()
|
info <- getWorkersInfo()
|
||||||
spell = info.hosts.defaultWorker.installationSpells[0]
|
spell = info.hosts.defaultWorker.installationSpells[0]
|
||||||
on spell.workerId via spell.hostId:
|
on spell.workerId via spell.hostId:
|
||||||
res = UrlDownloader.get_n_save(url, fname)
|
res = UrlDownloader.get_n_save(url, fname)
|
||||||
<- res
|
<- res
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user