app/controllers/concerns/api/controllers/base.rb in bullet_train-api-1.1.15 vs app/controllers/concerns/api/controllers/base.rb in bullet_train-api-1.2.0

- old
+ new

@@ -2,30 +2,25 @@ require "pagy_cursor/pagy/extras/uuid_cursor" module Api::Controllers::Base extend ActiveSupport::Concern - # TODO Why doesn't `before_action :doorkeeper_authorize!` throw an exception? - class NotAuthenticatedError < StandardError - end - included do include ActionController::Helpers helper ApplicationHelper include LoadsAndAuthorizesResource include Pagy::Backend before_action :set_default_response_format - before_action :doorkeeper_authorize! after_action :set_pagination_headers def modify_url_params(url, new_params) uri = URI.parse(url) query = Rack::Utils.parse_query(uri.query) new_params.each do |key, value| - query[key] = value + query[key.to_s] = value end uri.query = Rack::Utils.build_query(query) uri.to_s end @@ -33,25 +28,22 @@ return unless @pagy if @pagy.has_more? if (collection = instance_variable_get(collection_variable)) next_cursor = collection.last.id - # TODO Probably not great that we're clobbering any `Link` header that might be set. - response.headers["Link"] = "<#{modify_url_params(request.url, after: next_cursor)}>; rel=next" + link_header = response.headers["Link"] + link_value = "<#{modify_url_params(request.url, after: next_cursor)}>; rel=\"next\"" + response.headers["Link"] = link_header ? "#{link_header}, #{link_value}" : link_value response.headers["Pagination-Next"] = next_cursor end end end rescue_from CanCan::AccessDenied, ActiveRecord::RecordNotFound do |exception| render json: {error: "Not found"}, status: :not_found end - rescue_from NotAuthenticatedError do |exception| - render json: {error: "Invalid token"}, status: :unauthorized - end - before_action :apply_pagination, only: [:index] end def permitted_fields [] @@ -63,11 +55,11 @@ def process_params(strong_params) end def current_user - raise NotAuthenticatedError unless doorkeeper_token.present? + raise Doorkeeper::Errors::InvalidToken unless doorkeeper_token.present? # TODO Remove this rescue once workspace clusters can write to this column on the identity server. # TODO Make this logic configurable so that downstream developers can write different methods for this column getting updated. begin doorkeeper_token.update(last_used_at: Time.zone.now) rescue ActiveRecord::StatementInvalid => _ @@ -93,10 +85,14 @@ def set_default_response_format request.format = :json end class_methods do + def controller_namespace + name.split("::").first(2).join("::") + end + def regex_to_remove_controller_namespace - /^#{name.split("::").first(2).join("::") + "::"}/ + /^#{controller_namespace + "::"}/ end end end