diff options
| author | Drahflow <drahflow@gmx.de> | 2014-02-05 01:11:42 +0100 |
|---|---|---|
| committer | Drahflow <drahflow@gmx.de> | 2014-02-05 01:11:42 +0100 |
| commit | f0c68d3ca87822d078cb16a0c65baff0ada4c53f (patch) | |
| tree | e7c83d8b6098ba4b5b8ed44088901a5e22ee2e6f /elymas/lib/net/alg/http.ey | |
| parent | 71bf585b25e86e1c56a25dd77d9d617de558236e (diff) | |
Parse URL query strings
Diffstat (limited to 'elymas/lib/net/alg/http.ey')
| -rw-r--r-- | elymas/lib/net/alg/http.ey | 38 |
1 files changed, 36 insertions, 2 deletions
diff --git a/elymas/lib/net/alg/http.ey b/elymas/lib/net/alg/http.ey index 6f7fe56..1238bcf 100644 --- a/elymas/lib/net/alg/http.ey +++ b/elymas/lib/net/alg/http.ey @@ -3,7 +3,7 @@ net .alg .bufferedEpollServer "^" via < - { "request unconfigured (of httpServer)" die } /request deffst + { "request unconfigured (of rawHttpServer)" die } /request deffst { = }' /set deffst { scope keys }' /setters deffst @@ -12,7 +12,7 @@ } /installSetters deffst > _ ==settings "::" via - { -1010 deffst = }' ::installSetters # TODO: def??? should overwrite existing values + { -10 deffst }' ::installSetters { ":" via "" ==url "" ==method < { defvst }' /put deffst > ==headers < @@ -41,6 +41,40 @@ } ^accept { ^run } /run deffst +> } /rawHttpServer net .alg .deff + +{ < + net .alg .rawHttpServer "^" via ^settings "::" via + + < + { "request unconfigured (of httpServer)" die } /request deffst + + { = }' /set deffst + { scope keys }' /setters deffst + { _ ^settings .installSetters =*install + setters { _ { set }_ -01 install }" each + } /installSetters deffst + > _ ==settings "::" via + + { -10 deffst }' ::installSetters + + { _ ==req ":" via + < { defvst }' > ==args { net .alg .uri .percentEncoding .|consume -30*20*1* }_ =*setArg + :url _ ==url + "^([^?]*)\\?(.*)$" regex { + =url "&" str .split { _ ==arg + "^([^=]*)=(.*)$" regex not { "" arg } rep + setArg + } each + } rep + + url args + < req keys { _ { : }_ -01 deffst }' each # TODO: this forwarding logic seems ugly, find a better way to forward activity levels + ==args { }_ =url + > ::request + } ^request + + { ^run } /run deffst > } /httpServer net .alg .deff # vim: syn=elymas |
