engine: resources: The http server flag res should autogroup

If we want to receive more than on flag (key) value, then these
obviously need to autogroup together, because it's the same http server
request that comes in and which should be shared by everyone with the
same path.
This commit is contained in:
James Shubin
2025-05-25 04:46:34 -04:00
parent 936cf7dd9d
commit 0fd6970c0a
2 changed files with 215 additions and 23 deletions

View File

@@ -0,0 +1,66 @@
# example of dual flag resource autogrouping+send/recv into http:server
# mkdir -p '/tmp/testing/.ssh/' -m 700 && ssh-keygen -N '' -t 'ed25519' -f '/tmp/testing/.ssh/id_ed25519'
# run mgmt...
# /usr/bin/curl --data-urlencode 'done=true' --data-urlencode 'password=sha1TODO' --data-urlencode 'sshtype=ssh-ed25519' --data-urlencode "val2=$(cut -d ' ' -f 2 '/tmp/testing/.ssh/id_ed25519.pub')" --data-urlencode 'sshcomment=root@foo' -o - 'http://localhost:9090/action/done/mac=some_mac'
import "fmt"
import "value"
$name1 = "foo"
$name2 = "bar"
$some_key = "some_mac"
$key1 = "done"
$key2 = "sshkey"
http:server ":9090" {
}
http:server:file "/file1" {
data => "hello, world, i'm file1 and i don't exist on disk!\n",
}
http:server:flag "${name1}" {
key => "${key1}",
path => "/action/done/mac=${some_key}",
#mapped => {$str_true => $str_true, $str_false => $str_false,},
}
kv "${name1}" {
key => $name1,
}
value "${name1}" {
#any => true, # bool
}
Http:Server:Flag["${name1}"].value -> Kv["${name1}"].value
Http:Server:Flag["${name1}"].value -> Value["${name1}"].any
#$st_val1 = value.get_bool($name1)
$st_val1 = value.get_str($name1)
$val1 = $st_val1->ready and $st_val1->value == "true" # export this value to parent scope
http:server:flag "${name2}" {
key => "${key2}", # different key!
path => "/action/done/mac=${some_key}", # same path
}
kv "${name2}" {
key => $name2,
}
value "${name2}" {
#any => true, # bool
}
Http:Server:Flag["${name2}"].value -> Kv["${name2}"].value
Http:Server:Flag["${name2}"].value -> Value["${name2}"].any
#$st_val2 = value.get_bool($name2)
$st_val2 = value.get_str($name2)
$val2 = $st_val2->value # possibly empty at the start
file "/tmp/testing/info" {
state => "exists",
content => fmt.printf("val1: %t\nval2: %s\n", $val1, $val2),
}