# HG changeset patch # User Kim Alvefur # Date 1605389908 -3600 # Node ID 07c11080027ed57b36f8b725a7dd054fae9bfbfb # Parent aed7038ab2abfed9d6d554c03362c79e5f87a978 mod_rest: Use util.error registry datatype Saves a few characters per line. diff -r aed7038ab2ab -r 07c11080027e mod_rest/mod_rest.lua --- a/mod_rest/mod_rest.lua Sat Nov 14 18:02:49 2020 +0100 +++ b/mod_rest/mod_rest.lua Sat Nov 14 22:38:28 2020 +0100 @@ -148,7 +148,7 @@ return tostring(s); end -local post_errors = { +local post_errors = errors.init("mod_rest", { noauthz = { code = 401, type = "auth", condition = "not-authorized", text = "No credentials provided" }, unauthz = { code = 403, type = "auth", condition = "not-authorized", text = "Credentials not accepted" }, parse = { code = 400, condition = "not-well-formed", text = "Failed to parse payload", }, @@ -160,7 +160,7 @@ iq_type = { code = 422, condition = "invalid-xml", text = "'iq' stanza must be of type 'get' or 'set'", }, iq_tags = { code = 422, condition = "bad-format", text = "'iq' stanza must have exactly one child tag", }, mediatype = { code = 415, condition = "bad-format", text = "Unsupported media type" }, -}; +}); local function handle_post(event) local request, response = event.request, event.response; @@ -169,11 +169,11 @@ if not request.headers.authorization then response.headers.www_authenticate = www_authenticate_header; - return errors.new("noauthz", nil, post_errors); + return post_errors.new("noauthz"); else origin = check_credentials(request); if not origin then - return errors.new("unauthz", nil, post_errors); + return post_errors.new("unauthz"); end from = jid.join(origin.username, origin.host, origin.resource); end @@ -182,31 +182,31 @@ -- parse fail local ctx = { error = err, type = request.headers.content_type, data = request.body, }; if err == "unknown-payload-type" then - return errors.new("mediatype", ctx, post_errors); + return post_errors.new("mediatype", ctx); end - return errors.new("parse", ctx, post_errors); + return post_errors.new("parse", ctx); end if payload.attr.xmlns then - return errors.new("xmlns", nil, post_errors); + return post_errors.new("xmlns"); elseif payload.name ~= "message" and payload.name ~= "presence" and payload.name ~= "iq" then - return errors.new("name", nil, post_errors); + return post_errors.new("name"); end local to = jid.prep(payload.attr.to); if not to then - return errors.new("to", nil, post_errors); + return post_errors.new("to"); end if payload.attr.from then local requested_from = jid.prep(payload.attr.from); if not requested_from then - return errors.new("from", nil, post_errors); + return post_errors.new("from"); end if jid.compare(requested_from, from) then from = requested_from; else - return errors.new("from_auth", nil, post_errors); + return post_errors.new("from_auth"); end end @@ -226,9 +226,9 @@ end if payload.attr.type ~= "get" and payload.attr.type ~= "set" then - return errors.new("iq_type", nil, post_errors); + return post_errors.new("iq_type"); elseif #payload.tags ~= 1 then - return errors.new("iq_tags", nil, post_errors); + return post_errors.new("iq_tags"); end return module:send_iq(payload, origin):next(