]> git.openstreetmap.org Git - rails.git/blob - app/controllers/api/messages/mailboxes_controller.rb
Merge remote-tracking branch 'upstream/pull/5457'
[rails.git] / app / controllers / api / messages / mailboxes_controller.rb
1 module Api
2   module Messages
3     class MailboxesController < ApiController
4       before_action :authorize
5
6       authorize_resource :message
7
8       before_action :set_request_formats
9
10       private
11
12       def show_messages
13         @messages = @messages.where(:muted => false)
14         if params[:order].nil? || params[:order] == "newest"
15           @messages = @messages.where(:id => ..params[:from_id]) unless params[:from_id].nil?
16           @messages = @messages.order(:id => :desc)
17         elsif params[:order] == "oldest"
18           @messages = @messages.where(:id => params[:from_id]..) unless params[:from_id].nil?
19           @messages = @messages.order(:id => :asc)
20         else
21           raise OSM::APIBadUserInput, "Invalid order specified"
22         end
23
24         limit = params[:limit]
25         if !limit
26           limit = Settings.default_message_query_limit
27         elsif !limit.to_i.positive? || limit.to_i > Settings.max_message_query_limit
28           raise OSM::APIBadUserInput, "Messages limit must be between 1 and #{Settings.max_message_query_limit}"
29         else
30           limit = limit.to_i
31         end
32
33         @messages = @messages.limit(limit)
34
35         # Render the result
36         respond_to do |format|
37           format.xml
38           format.json
39         end
40       end
41     end
42   end
43 end