Mercurial > prosody-modules
comparison mod_auth_http_async/mod_auth_http_async.lua @ 1927:439711709d29
mod_auth_http_async: Wrap up async http request in a function
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Fri, 23 Oct 2015 16:52:45 +0200 |
| parents | 39a0a35f02bc |
| children | 95bbf3c4aa27 |
comparison
equal
deleted
inserted
replaced
| 1926:4c4a4191b825 | 1927:439711709d29 |
|---|---|
| 16 local host = module.host; | 16 local host = module.host; |
| 17 | 17 |
| 18 local api_base = module:get_option_string("http_auth_url", ""):gsub("$host", host); | 18 local api_base = module:get_option_string("http_auth_url", ""):gsub("$host", host); |
| 19 if api_base == "" then error("http_auth_url required") end | 19 if api_base == "" then error("http_auth_url required") end |
| 20 | 20 |
| 21 local function async_http_request(url, ex); | |
| 22 local wait, done = waiter(); | |
| 23 | |
| 24 local content, code, request, response; | |
| 25 local ret; | |
| 26 function cb(content_, code_, request_, response_) | |
| 27 content, code, request, response = content_, code_, request_, response_; | |
| 28 done(); | |
| 29 end | |
| 30 wait(); | |
| 31 return content, code, request, response; | |
| 32 end | |
| 33 | |
| 21 local provider = {}; | 34 local provider = {}; |
| 22 | 35 |
| 23 function provider.test_password(username, password) | 36 function provider.test_password(username, password) |
| 24 log("debug", "test password for user %s at host %s", username, host); | 37 log("debug", "test password for user %s at host %s", username, host); |
| 25 | 38 |
| 26 local wait, done = waiter(); | |
| 27 | 39 |
| 28 local code = -1; | 40 local _, code = async_http_request(api_base:gsub("$user", username), { |
| 29 http.request(api_base:gsub("$user", username), { | 41 headers = { Authorization = "Basic "..base64(username..":"..password); }; |
| 30 headers = { | 42 }); |
| 31 Authorization = "Basic "..base64(username..":"..password); | |
| 32 }; | |
| 33 }, | |
| 34 function(body, _code) | |
| 35 code = _code; | |
| 36 done(); | |
| 37 end); | |
| 38 | |
| 39 wait(); | |
| 40 | 43 |
| 41 if code >= 200 and code <= 299 then | 44 if code >= 200 and code <= 299 then |
| 42 return true; | 45 return true; |
| 43 else | 46 else |
| 44 module:log("debug", "HTTP auth provider returned status code %d", code); | 47 module:log("debug", "HTTP auth provider returned status code %d", code); |
