Skip to content

Commit

Permalink
Merge pull request cloudflare#4 from danifbento/master
Browse files Browse the repository at this point in the history
Fix json object with invalid value and new features
  • Loading branch information
cycomachead authored Aug 10, 2021
2 parents 7918108 + 096a385 commit 6a5a622
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 3 deletions.
7 changes: 4 additions & 3 deletions raven/init.lua
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,8 @@ function _M.new(conf)
tags = conf.tags or nil,
extra = conf.extra or nil,
environment = conf.environment or nil,
release = conf.release or nil
release = conf.release or nil,
server_name = conf.server_name or nil
}

return setmetatable(obj, raven_mt)
Expand Down Expand Up @@ -339,8 +340,8 @@ function raven_mt:send_report(json, conf)
end

json.request = _M.get_request_data()
json.server_name = _M.get_server_name()
json.releae = _M.get_release()
json.server_name = self.server_name or _M.get_server_name()
json.release = self.release or _M.get_release()

local json_str = json_encode(json)
local ok, err = self.sender:send(json_str)
Expand Down
37 changes: 37 additions & 0 deletions raven/senders/ngx.lua
Original file line number Diff line number Diff line change
Expand Up @@ -240,4 +240,41 @@ function _M.get_server_name()
return "undefined"
end

--- Returns the value of the `request_data` variable if possible.
-- Otherwise (wrong phase), this will return {}.
--
-- It is intended to be used as a `get_request_data` override on the main raven
-- instance.
--
-- @usage
-- local raven_ngx = require("raven.senders.ngx")
-- local rvn = raven.new(...)
-- rvn.get_request_data = raven_ngx.get_request_data
function _M.get_request_data()
local phase = ngx.get_phase()
-- the ngx.var.* API is not available in all contexts
if phase == "set" or
phase == "rewrite" or
phase == "access" or
phase == "content" or
phase == "header_filter" or
phase == "body_filter" or
phase == "log"
then
return {
caller = "nginx",
method = ngx.var.request_method or nil,
host = ngx.var.http_host or nil,
url = ngx.var.request_uri or nil,
query_string = ngx.var.query_string or nil,
env = {
REMOTE_ADDR = ngx.var.remote_addr or nil,
},
}
end
return {
caller = "nginx",
}
end

return _M

0 comments on commit 6a5a622

Please sign in to comment.