scinote-web/app/controllers/api/api_controller.rb

58 lines
1.6 KiB
Ruby
Raw Normal View History

2018-08-17 17:59:47 +08:00
# frozen_string_literal: true
2017-08-30 00:49:07 +08:00
module Api
class ApiController < ActionController::API
include TokenAuthentication
2017-08-30 00:49:07 +08:00
attr_reader :current_user
2018-08-17 17:59:47 +08:00
before_action :authenticate_request!, except: %i(status health)
2017-08-30 00:49:07 +08:00
2017-09-01 22:36:45 +08:00
rescue_from StandardError do |e|
logger.error e.message
logger.error e.backtrace.join("\n")
2017-08-30 00:49:07 +08:00
render json: {}, status: :bad_request
end
rescue_from JWT::DecodeError,
JWT::InvalidPayload,
JWT::VerificationError do |e|
2017-09-01 22:36:45 +08:00
logger.error e.message
2017-08-30 00:49:07 +08:00
render json: { message: I18n.t('api.core.invalid_token') },
status: :unauthorized
end
rescue_from JWT::ExpiredSignature do |e|
logger.error e.message
render json: { message: I18n.t('api.core.expired_token') },
status: :unauthorized
end
2017-08-30 00:49:07 +08:00
def initialize
super
@iss = nil
end
def health
User.new && Team.new && Project.new
User.first if params[:db]
if Rails.application.secrets.system_notifications_uri.present? &&
Rails.application.secrets.system_notifications_channel.present? &&
!Notifications::SyncSystemNotificationsService.available?
return render plain: 'SYSTEM NOTIFICATIONS SERVICE CHECK FAILED', status: :error
end
render plain: 'RUNNING'
end
2017-08-30 00:49:07 +08:00
def status
response = {}
response[:message] = I18n.t('api.core.status_ok')
response[:versions] = []
Extends::API_VERSIONS.each do |ver|
response[:versions] << { version: ver, baseUrl: "/api/#{ver}/" }
end
render json: response, status: :ok
end
end
end