Posted to tcl by sebres at Thu May 28 12:14:27 GMT 2020view raw
- # uri's of rest-api:
- namespace eval rest {proc uri2cmd {req} {
- set p [dict get $req uri]; set m [dict get $req method]
- # set p [::cgi::path validate $p]
- list [string map {/ ::} $p]::=$m {*}[dict get $req args]
- }}
- # uri's of simplest html-page's:
- namespace eval page {proc uri2cmd {req} {
- set p [dict get $req uri]; set m [dict get $req method]
- # set p [::cgi::path validate $p];
- regsub {/([^/]*)$} $p {/=\1} p
- list ::page[string map {/ ::} $p] $m {*}[dict get $req args]
- }}
- # examples:
- set req {api rest uri "/some/thing" method put args {name X surname Y}}
- puts [namespace inscope [dict get $req api] uri2cmd $req]
- # {*}[namespace inscope [dict get $req api] uri2cmd $req]
- set req {api page uri "/some/page" method get args {id 123}}
- puts [namespace inscope [dict get $req api] uri2cmd $req]
- # {*}[namespace inscope [dict get $req api] uri2cmd $req]
- set req {api page uri "/" method get args {}}
- puts [namespace inscope [dict get $req api] uri2cmd $req]
- # {*}[namespace inscope [dict get $req api] uri2cmd $req]