annotate framework/env/auth/openid/_curl.lua @ 20:47ddf0f86009
OpenID 2.0 Relying Party support
author |
jbe/bsw |
date |
Fri Apr 02 02:11:32 2010 +0200 (2010-04-02) |
parents |
|
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
|