From 0e376b5238a2a8ce5825cded814c754aa6eae610 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Cuervo?= Date: Fri, 21 Jul 2023 17:18:38 -0400 Subject: [PATCH 1/3] Add initial data wish impl --- virtual-programs/data.folk | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 virtual-programs/data.folk diff --git a/virtual-programs/data.folk b/virtual-programs/data.folk new file mode 100644 index 00000000..b1dc8dc9 --- /dev/null +++ b/virtual-programs/data.folk @@ -0,0 +1,25 @@ +proc sanitizeURL {url} { + set url [string map {http:// "" https:// ""} $url] + set url [string map {/ _ ? "" * "" < "" > "" : "" | "" " " ""} $url] + if {[string length $url] > 255} { + set url [string range $url 0 254] + } + return $url +} + +When /thing/ wishes /page/ has data from /address/ { + set sanitized [sanitizeURL $address] + set path "/home/folk/page-data/$sanitized" + if {[file exists $path]} { + set fileId [open $path "r"] + set data [read $fileId] + close $fileId + Claim $page has data $data loaded from $address + } else { + set data [exec -ignorestderr curl $address] + set fileId [open $path "w"] + puts $fileId $data + close $fileId + Claim $page has data $data loaded from $address + } +} \ No newline at end of file From d5137431fbe05e8880746d99bb39826d6214c02f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Cuervo?= Date: Fri, 21 Jul 2023 18:16:57 -0400 Subject: [PATCH 2/3] Normalize data path --- virtual-programs/data.folk | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/virtual-programs/data.folk b/virtual-programs/data.folk index b1dc8dc9..9a0f760d 100644 --- a/virtual-programs/data.folk +++ b/virtual-programs/data.folk @@ -9,7 +9,8 @@ proc sanitizeURL {url} { When /thing/ wishes /page/ has data from /address/ { set sanitized [sanitizeURL $address] - set path "/home/folk/page-data/$sanitized" + set path "~/page-data/$sanitized" + set path [file normalize $path] if {[file exists $path]} { set fileId [open $path "r"] set data [read $fileId] From 5e6d9b29b093aa68b470b1628efeb8551fb2acf7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Cuervo?= Date: Mon, 24 Jul 2023 16:24:26 -0400 Subject: [PATCH 3/3] Use When When for data loader --- virtual-programs/data.folk | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/virtual-programs/data.folk b/virtual-programs/data.folk index 9a0f760d..48b52e6b 100644 --- a/virtual-programs/data.folk +++ b/virtual-programs/data.folk @@ -7,7 +7,7 @@ proc sanitizeURL {url} { return $url } -When /thing/ wishes /page/ has data from /address/ { +When when /page/ has data /data/ from /address/ /lambda/ with environment /e/ { set sanitized [sanitizeURL $address] set path "~/page-data/$sanitized" set path [file normalize $path] @@ -15,12 +15,12 @@ When /thing/ wishes /page/ has data from /address/ { set fileId [open $path "r"] set data [read $fileId] close $fileId - Claim $page has data $data loaded from $address + Claim $page has data $data from $address } else { set data [exec -ignorestderr curl $address] set fileId [open $path "w"] puts $fileId $data close $fileId - Claim $page has data $data loaded from $address + Claim $page has data $data from $address } } \ No newline at end of file