evazion
2022-10-31 22:50:37 -05:00
parent b41b67af6c
commit ad998a8127
3 changed files with 17 additions and 1 deletions

View File

@@ -3,6 +3,8 @@
class MediaAssetsController < ApplicationController class MediaAssetsController < ApplicationController
respond_to :html, :json, :xml respond_to :html, :json, :xml
rate_limit :image, rate: 5.0/1.seconds, burst: 50
def index def index
@limit = params.fetch(:limit, CurrentUser.user.per_page).to_i.clamp(0, PostSets::Post::MAX_PER_PAGE) @limit = params.fetch(:limit, CurrentUser.user.per_page).to_i.clamp(0, PostSets::Post::MAX_PER_PAGE)
@preview_size = params[:size].presence || cookies[:post_preview_size].presence || MediaAssetGalleryComponent::DEFAULT_SIZE @preview_size = params[:size].presence || cookies[:post_preview_size].presence || MediaAssetGalleryComponent::DEFAULT_SIZE
@@ -33,4 +35,12 @@ class MediaAssetsController < ApplicationController
respond_with(@media_asset) respond_with(@media_asset)
end end
end end
def image
media_asset = authorize MediaAsset.find(params[:media_asset_id])
variant = media_asset.variant(params[:variant])
raise ActiveRecord::RecordNotFound if variant.nil?
redirect_to variant.file_url
end
end end

View File

@@ -5,6 +5,10 @@ class MediaAssetPolicy < ApplicationPolicy
true true
end end
def image?
can_see_image?
end
def can_see_image? def can_see_image?
record.post.blank? || record.post.visible?(user) record.post.blank? || record.post.visible?(user)
end end

View File

@@ -146,7 +146,9 @@ Rails.application.routes.draw do
get :check, to: redirect {|path_params, req| "/iqdb_queries?#{req.query_string}"} get :check, to: redirect {|path_params, req| "/iqdb_queries?#{req.query_string}"}
end end
end end
resources :media_assets, only: [:index, :show] resources :media_assets, only: [:index, :show] do
get "/:variant", to: "media_assets#image", as: :image
end
resources :media_metadata, only: [:index] resources :media_metadata, only: [:index]
resources :ai_tags, only: [:index] resources :ai_tags, only: [:index]