otwarchive-symphonyarchive/app/controllers/hit_count_controller.rb

32 lines
852 B
Ruby
Raw Permalink Normal View History

2026-03-11 22:22:11 +00:00
# This controller is exclusively used to track hit counts on works.
#
# Note that we deliberately only accept JSON requests because JSON requests
# bypass a lot of the usual before_action hooks, many of which can trigger
# database queries. We want this action to avoid hitting the database if at
# all possible.
class HitCountController < ApplicationController
skip_around_action :set_current_user
skip_before_action :logout_if_not_user_credentials
skip_after_action :ensure_user_credentials,
:ensure_admin_credentials
def create
respond_to do |format|
format.json do
if ENV["REQUEST_FROM_BOT"]
head :forbidden
else
RedisHitCounter.add(
params[:work_id].to_i,
request.remote_ip
)
head :ok
end
end
end
end
end