webmcp
annotate framework/env/auth/openid/_curl.lua @ 34:e19b0b5c46ba
allow execptions an slot.reset_all()
this is usefull when an error is detected deep into a view where you want redirect
to something usefull, but still save some slots like notice and error slots
this is usefull when an error is detected deep into a view where you want redirect
to something usefull, but still save some slots like notice and error slots
| author | Daniel Poelzleithner <poelzi@poelzi.org> | 
|---|---|
| date | Wed Oct 06 16:14:33 2010 +0200 (2010-10-06) | 
| parents | 47ddf0f86009 | 
| children | 3d43a5cf17c1 | 
| rev | line source | 
|---|---|
| jbe/bsw@20 | 1 function auth.openid._curl(url, curl_options) | 
| jbe/bsw@20 | 2 -- NOTE: Don't accept URLs starting with file:// or other nasty protocols | 
| jbe/bsw@20 | 3 if not string.find(url, "^[Hh][Tt][Tt][Pp][Ss]?://") then | 
| jbe/bsw@20 | 4 return nil | 
| jbe/bsw@20 | 5 end | 
| jbe/bsw@20 | 6 local options = table.new(curl_options) | 
| jbe/bsw@20 | 7 options[#options+1] = "-i" | 
| jbe/bsw@20 | 8 options[#options+1] = url | 
| jbe/bsw@20 | 9 local stdout, errmsg, status = os.pfilter(nil, "curl", unpack(options)) | 
| jbe/bsw@20 | 10 if not stdout then | 
| jbe/bsw@20 | 11 error("Error while executing curl: " .. errmsg) | 
| jbe/bsw@20 | 12 end | 
| jbe/bsw@20 | 13 if status ~= 0 then | 
| jbe/bsw@20 | 14 return nil | 
| jbe/bsw@20 | 15 end | 
| jbe/bsw@20 | 16 local status = tonumber(string.match(stdout, "^[^ ]+ *([0-9]*)")) | 
| jbe/bsw@20 | 17 local headers = string.match(stdout, "(\r?\n.-\r?\n)\r?\n") | 
| jbe/bsw@20 | 18 local body = string.match(stdout, "\r?\n\r?\n(.*)") | 
| jbe/bsw@20 | 19 return status, headers, body | 
| jbe/bsw@20 | 20 end |