Mercurial > prosody-modules
changeset 6330:4e63151010bf
mod_http_admin_api: Convert remaining HTTP errors to util.error
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Wed, 01 Oct 2025 12:00:09 +0100 |
| parents | 5571c75a4fed |
| children | 6a3b38051d74 |
| files | mod_http_admin_api/mod_http_admin_api.lua |
| diffstat | 1 files changed, 39 insertions(+), 37 deletions(-) [+] |
line wrap: on
line diff
--- a/mod_http_admin_api/mod_http_admin_api.lua Wed Oct 01 11:25:57 2025 +0100 +++ b/mod_http_admin_api/mod_http_admin_api.lua Wed Oct 01 12:00:09 2025 +0100 @@ -134,7 +134,7 @@ function get_invite_by_id(event, invite_id) local invite = invites.get_account_invite_info(invite_id); if not invite then - return 404; + return nil, "item-not-found"; end event.response.headers["Content-Type"] = json_content_type; @@ -148,12 +148,12 @@ if request.body and #request.body > 0 then if request.headers.content_type ~= json_content_type then module:log("warn", "Invalid content type"); - return 400; + return nil, "invalid-json"; end options = json.decode(event.request.body); if not options then module:log("warn", "Invalid JSON"); - return 400; + return nil, "invalid-json"; end else options = {}; @@ -164,12 +164,12 @@ local invite; if invite_type == "reset" then if not options.username then - return 400; + return nil, "bad-request"; end invite = invites.create_account_reset(options.username, options.ttl); elseif invite_type == "group" then if not options.groups then - return 400; + return nil, "bad-request"; end invite = invites.create_group(options.groups, { source = source; @@ -194,8 +194,9 @@ end function delete_invite(event, invite_id) --luacheck: ignore 212/event - if not invites.delete_account_invite(invite_id) then - return 404; + local ok, err = invites.delete_account_invite(invite_id); + if not ok then + return nil, err; end return 200; end @@ -443,7 +444,7 @@ local user_info = get_user_info(username); if not user_info then - return 404; + return nil, "user-not-found"; end event.response.headers["Content-Type"] = json_content_type; @@ -488,7 +489,7 @@ local updated_attributes = set.new(array.collect(it.keys(new_user))); if not (updated_attributes - writable_user_attributes):empty() then module:log("warn", "Unable to service PATCH user request, unsupported attributes: %s", (updated_attributes - writable_user_attributes)); - return 400; + return nil, "feature-not-implemented"; end if new_user.enabled ~= nil and new_user.enabled ~= current_user.enabled then @@ -503,21 +504,21 @@ function update_user(event, username) if not username then - return 400; + return nil, "bad-request"; end local request = event.request; if request.headers.content_type ~= json_content_type or (not request.body or #request.body == 0) then - return 400; + return nil, "invalid-json"; end local new_user = json.decode(event.request.body); if not new_user then - return 400; + return nil, "invalid-json"; end if new_user.username and new_user.username ~= username then - return 400; + return nil, "bad-request"; -- Cannot change the username end if new_user.display_name then @@ -596,7 +597,7 @@ function get_group_by_id(event, group_id) local group = mod_groups.get_info(group_id); if not group then - return 404; + return nil, "group-not-found"; end event.response.headers["Content-Type"] = json_content_type; @@ -613,11 +614,11 @@ local request = event.request; if request.headers.content_type ~= json_content_type or (not request.body or #request.body == 0) then - return 400; + return nil, "invalid-json"; end local group = json.decode(event.request.body); if not group then - return 400; + return nil, "invalid-json"; end local create_muc = group.create_muc and true or false; @@ -690,16 +691,16 @@ if group_id then local muc_params = json.decode(event.request.body); if not muc_params then - return 400; + return nil, "invalid-json"; end - local muc = mod_groups.add_group_chat(group_id, muc_params.name); + local muc, err = mod_groups.add_group_chat(group_id, muc_params.name); if not muc then - return 500; + return nil, err; end return json.encode(muc); end - return 404; + return nil, "group-not-found"; end function delete_group(event, subpath) --luacheck: ignore 212/event @@ -708,19 +709,19 @@ if group_id then -- Operation is on a sub-resource if sub_resource_type == "members" then - if mod_groups.remove_member(group_id, sub_resource_id) then - return 204; - else - return 500; + local ok, err = mod_groups.remove_member(group_id, sub_resource_id); + if not ok then + return nil, err; end + return 204; elseif sub_resource_type == "chats" then - if mod_groups.remove_group_chat(group_id, sub_resource_id) then - return 204; - else - return 500; + local ok, err = mod_groups.remove_group_chat(group_id, sub_resource_id); + if not ok then + return nil, err; end + return 204; else - return 404; + return nil, "item-not-found"; end else -- Action refers to the group @@ -728,15 +729,16 @@ end if not group_id then - return 400; + return nil, "bad-request"; end if not mod_groups.exists(group_id) then - return 404; + return nil, "group-not-found"; end - if not mod_groups.delete(group_id) then - return 500; + local ok, err = mod_groups.delete(group_id); + if not ok then + return nil, err; end return 204; end @@ -800,19 +802,19 @@ local request = event.request; if request.headers.content_type ~= json_content_type or (not request.body or #request.body == 0) then - return 400; + return nil, "invalid-json"; end local body = json.decode(event.request.body); if not body then - return 400; + return nil, "invalid-json"; end if type(body.recipients) ~= "table" and body.recipients ~= "online" and body.recipients ~= "all" then - return 400; + return nil, "bad-request"; end if not body.body or #body.body == 0 then - return 400; + return nil, "bad-request"; end local message = st.message():tag("body"):text(body.body):up();
