Sha256: 633d6afc25be922a57888047bf0b67057c0383a45de8ae9e4a6f25df76f90289

Contents?: true

Size: 1.14 KB

Versions: 15

Compression:

Stored size: 1.14 KB

Contents

module MockleyCrew::MockleyCrewHandled
  extend ActiveSupport::Concern

  included do
    prepend_before_action :activate_database, if: :mockley_crew_header_present?
    prepend_before_action :set_database, if: :mockley_crew_header_present?
    append_after_action :restore_database, if: :mockley_crew_header_present?
    append_after_action :set_response_header, if: :mockley_crew_header_present?

    rescue_from MockleyCrew::Errors::DatabaseNotFoundError, with: :invalid_badge
  end

  private

    def mockley_crew_header_present?
      request.headers[MockleyCrew.configuration.crew_header].present?
    end

    def activate_database
      @database.on
    end

    def restore_database
      @database.off
    end

    def set_database
      @database_name = request.headers[MockleyCrew.configuration.crew_header]
      @database = MockleyCrew::Database.find_by_filename(@database_name)
    end

    def set_response_header
      return unless @database
      response.set_header(MockleyCrew.configuration.crew_header, @database.filename)
    end

    def invalid_badge
      render json: { success: false, error: "Invalid badge" }, status: 403 
    end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
mockley_crew-1.3.9 lib/mockley_crew/mockley_crew_handled.rb
mockley_crew-1.3.8 lib/mockley_crew/mockley_crew_handled.rb
mockley_crew-1.3.7 lib/mockley_crew/mockley_crew_handled.rb
mockley_crew-1.2.2 lib/mockley_crew/mockley_crew_handled.rb
mockley_crew-1.1.9 lib/mockley_crew/mockley_crew_handled.rb
mockley_crew-1.1.8 lib/mockley_crew/mockley_crew_handled.rb
mockley_crew-1.1.7 lib/mockley_crew/mockley_crew_handled.rb
mockley_crew-1.1.6 lib/mockley_crew/mockley_crew_handled.rb
mockley_crew-1.1.5 lib/mockley_crew/mockley_crew_handled.rb
mockley_crew-1.1.4 lib/mockley_crew/mockley_crew_handled.rb
mockley_crew-1.1.3 lib/mockley_crew/mockley_crew_handled.rb
mockley_crew-1.1.2 lib/mockley_crew/mockley_crew_handled.rb
mockley_crew-1.1.1 lib/mockley_crew/mockley_crew_handled.rb
mockley_crew-1.1.0 lib/mockley_crew/mockley_crew_handled.rb
mockley_crew-1.0.0 lib/mockley_crew/mockley_crew_handled.rb