Skip to content

Commit 6a5a622

Browse files
authored
Merge pull request cloudflare#4 from danifbento/master
Fix json object with invalid value and new features
2 parents 7918108 + 096a385 commit 6a5a622

2 files changed

Lines changed: 41 additions & 3 deletions

File tree

raven/init.lua

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,8 @@ function _M.new(conf)
137137
tags = conf.tags or nil,
138138
extra = conf.extra or nil,
139139
environment = conf.environment or nil,
140-
release = conf.release or nil
140+
release = conf.release or nil,
141+
server_name = conf.server_name or nil
141142
}
142143

143144
return setmetatable(obj, raven_mt)
@@ -339,8 +340,8 @@ function raven_mt:send_report(json, conf)
339340
end
340341

341342
json.request = _M.get_request_data()
342-
json.server_name = _M.get_server_name()
343-
json.releae = _M.get_release()
343+
json.server_name = self.server_name or _M.get_server_name()
344+
json.release = self.release or _M.get_release()
344345

345346
local json_str = json_encode(json)
346347
local ok, err = self.sender:send(json_str)

raven/senders/ngx.lua

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,4 +240,41 @@ function _M.get_server_name()
240240
return "undefined"
241241
end
242242

243+
--- Returns the value of the `request_data` variable if possible.
244+
-- Otherwise (wrong phase), this will return {}.
245+
--
246+
-- It is intended to be used as a `get_request_data` override on the main raven
247+
-- instance.
248+
--
249+
-- @usage
250+
-- local raven_ngx = require("raven.senders.ngx")
251+
-- local rvn = raven.new(...)
252+
-- rvn.get_request_data = raven_ngx.get_request_data
253+
function _M.get_request_data()
254+
local phase = ngx.get_phase()
255+
-- the ngx.var.* API is not available in all contexts
256+
if phase == "set" or
257+
phase == "rewrite" or
258+
phase == "access" or
259+
phase == "content" or
260+
phase == "header_filter" or
261+
phase == "body_filter" or
262+
phase == "log"
263+
then
264+
return {
265+
caller = "nginx",
266+
method = ngx.var.request_method or nil,
267+
host = ngx.var.http_host or nil,
268+
url = ngx.var.request_uri or nil,
269+
query_string = ngx.var.query_string or nil,
270+
env = {
271+
REMOTE_ADDR = ngx.var.remote_addr or nil,
272+
},
273+
}
274+
end
275+
return {
276+
caller = "nginx",
277+
}
278+
end
279+
243280
return _M

0 commit comments

Comments
 (0)