]> git.openstreetmap.org Git - rails.git/blob - app/controllers/api/old_elements_controller.rb
Use @elements instead of @elems in api element history
[rails.git] / app / controllers / api / old_elements_controller.rb
1 # this class pulls together the logic for all the old_* controllers
2 # into one place. as it turns out, the API methods for historical
3 # nodes, ways and relations are basically identical.
4 module Api
5   class OldElementsController < ApiController
6     before_action :setup_user_auth
7
8     authorize_resource
9
10     before_action :lookup_old_element, :except => [:index]
11     before_action :lookup_old_element_versions, :only => [:index]
12
13     before_action :set_request_formats
14
15     def index
16       # the .where() method used in the lookup_old_element_versions
17       # call won't throw an error if no records are found, so we have
18       # to do that ourselves.
19       raise OSM::APINotFoundError if @elements.empty?
20
21       # determine visible elements
22       @elements = @elements.unredacted unless show_redactions?
23
24       # Render the result
25       respond_to do |format|
26         format.xml
27         format.json
28       end
29     end
30
31     def show
32       if @old_element.redacted? && !show_redactions?
33         head :forbidden
34
35       else
36         response.last_modified = @old_element.timestamp
37
38         # Render the result
39         respond_to do |format|
40           format.xml
41           format.json
42         end
43       end
44     end
45
46     private
47
48     def show_redactions?
49       current_user&.moderator? && params[:show_redactions] == "true"
50     end
51   end
52 end