Software / code / prosody
Comparison
plugins/mod_http.lua @ 4669:0e0a72679f77
mod_http: Pass portion of path that matched wildcard to wildcard handlers, as a second parameter
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Mon, 23 Apr 2012 21:34:05 +0100 |
| parent | 4667:d0cfc49f3f2b |
| child | 4678:9613673f916a |
comparison
equal
deleted
inserted
replaced
| 4668:cce0c739b0d7 | 4669:0e0a72679f77 |
|---|---|
| 44 apps[app_name] = apps[app_name] or {}; | 44 apps[app_name] = apps[app_name] or {}; |
| 45 local app_handlers = apps[app_name]; | 45 local app_handlers = apps[app_name]; |
| 46 for key, handler in pairs(event.item.route or {}) do | 46 for key, handler in pairs(event.item.route or {}) do |
| 47 local event_name = get_http_event(host, app_path, key); | 47 local event_name = get_http_event(host, app_path, key); |
| 48 if event_name then | 48 if event_name then |
| 49 if event_name:sub(-2, -1) == "/*" then | |
| 50 local base_path = event_name:match("/(.+)/*$"); | |
| 51 local _handler = handler; | |
| 52 handler = function (event) | |
| 53 local path = event.request.path:sub(#base_path+1); | |
| 54 return _handler(event, path); | |
| 55 end; | |
| 56 end | |
| 49 if not app_handlers[event_name] then | 57 if not app_handlers[event_name] then |
| 50 app_handlers[event_name] = handler; | 58 app_handlers[event_name] = handler; |
| 51 server.add_handler(event_name, handler); | 59 server.add_handler(event_name, handler); |
| 52 else | 60 else |
| 53 module:log("warn", "App %s added handler twice for '%s', ignoring", app_name, event_name); | 61 module:log("warn", "App %s added handler twice for '%s', ignoring", app_name, event_name); |