diff options
author | Steven Barth <steven@midlink.org> | 2008-06-14 19:30:30 +0000 |
---|---|---|
committer | Steven Barth <steven@midlink.org> | 2008-06-14 19:30:30 +0000 |
commit | 1d7935cae058dd859129705b693afabaa9e2f121 (patch) | |
tree | 0d69bbe589d1174141d707e0e753237ccc7f19c5 /libs/sgi-wsapi/luasrc | |
parent | 16924c1d83e4c526401d670162bff10d45df3216 (diff) |
* Added preliminary support for WSAPI SGI
Diffstat (limited to 'libs/sgi-wsapi/luasrc')
-rw-r--r-- | libs/sgi-wsapi/luasrc/sgi/wsapi.lua | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/libs/sgi-wsapi/luasrc/sgi/wsapi.lua b/libs/sgi-wsapi/luasrc/sgi/wsapi.lua new file mode 100644 index 0000000000..e7082493c6 --- /dev/null +++ b/libs/sgi-wsapi/luasrc/sgi/wsapi.lua @@ -0,0 +1,69 @@ +--[[ +LuCI - SGI-Module for WSAPI + +Description: +Server Gateway Interface for WSAPI + +FileId: +$Id$ + +License: +Copyright 2008 Steven Barth <steven@midlink.org> + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +]]-- +module("luci.sgi.wsapi", package.seeall) +require("luci.http") +require("luci.dispatcher") +require("wsapi.request") + +function run(wsapi_env) + local r = luci.http.Request() + r.env = wsapi_env + r.request = wsapi.request.parse_post_data(wsapi_env, + wsapi.request.parse_qs(wsapi_env.QUERY_STRING)) + + local res, id, data1, data2 = true, 0, nil, nil + local headers = {} + local status = 200 + + local x = coroutine.create(luci.dispatcher.httpdispatch) + while id < 3 do + res, id, data1, data2 = coroutine.resume(x, r) + + if not res then + status = 500 + headers["Content-Type"] = "text/plain" + local err = {id} + return status, headers, function() local x = table.remove(err) return x end + end + + if id == 1 then + status = data1 + elseif id == 2 then + headers[data1] = data2 + end + end + + local function iter() + local res, id, data1, data2 = coroutine.resume(x) + if not res or id == 5 then + return nil + else + return data1 + end + end + + return status, headers, iter +end |