Added database, API and GPX status to capabilities.
This commit is contained in:
parent
10a7e1a5f0
commit
3822e8de77
3 changed files with 41 additions and 4 deletions
|
@ -285,7 +285,12 @@ class ApiController < ApplicationController
|
|||
timeout = XML::Node.new 'timeout'
|
||||
timeout['seconds'] = API_TIMEOUT.to_s
|
||||
api << timeout
|
||||
|
||||
status = XML::Node.new 'status'
|
||||
status['database'] = database_status.to_s
|
||||
status['api'] = api_status.to_s
|
||||
status['gpx'] = gpx_status.to_s
|
||||
api << status
|
||||
|
||||
doc.root << api
|
||||
|
||||
render :text => doc.to_s, :content_type => "text/xml"
|
||||
|
|
|
@ -206,20 +206,49 @@ class ApplicationController < ActionController::Base
|
|||
end
|
||||
|
||||
def check_api_readable
|
||||
if STATUS == :database_offline or STATUS == :api_offline
|
||||
if api_status == :offline
|
||||
report_error "Database offline for maintenance", :service_unavailable
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
def check_api_writable
|
||||
if STATUS == :database_offline or STATUS == :database_readonly or
|
||||
STATUS == :api_offline or STATUS == :api_readonly
|
||||
unless api_status == :online
|
||||
report_error "Database offline for maintenance", :service_unavailable
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
def database_status
|
||||
if STATUS == :database_offline
|
||||
:offline
|
||||
elsif STATUS == :database_readonly
|
||||
:readonly
|
||||
else
|
||||
:online
|
||||
end
|
||||
end
|
||||
|
||||
def api_status
|
||||
status = database_status
|
||||
if status == :online
|
||||
if STATUS == :api_offline
|
||||
status = :offline
|
||||
elsif STATUS == :api_readonly
|
||||
status = :readonly
|
||||
end
|
||||
end
|
||||
return status
|
||||
end
|
||||
|
||||
def gpx_status
|
||||
status = database_status
|
||||
if status == :online
|
||||
status = :offline if STATUS == :gpx_offline
|
||||
end
|
||||
return status
|
||||
end
|
||||
|
||||
def require_public_data
|
||||
unless @user.data_public?
|
||||
report_error "You must make your edits public to upload new data", :forbidden
|
||||
|
|
|
@ -299,6 +299,9 @@ class ApiControllerTest < ActionController::TestCase
|
|||
assert_select "area[maximum=#{MAX_REQUEST_AREA}]", :count => 1
|
||||
assert_select "tracepoints[per_page=#{TRACEPOINTS_PER_PAGE}]", :count => 1
|
||||
assert_select "changesets[maximum_elements=#{Changeset::MAX_ELEMENTS}]", :count => 1
|
||||
assert_select "status[database=online]", :count => 1
|
||||
assert_select "status[api=online]", :count => 1
|
||||
assert_select "status[gpx=online]", :count => 1
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue