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
respond_to :html, :json, :xml
rate_limit :image, rate: 5.0/1.seconds, burst: 50
def index
@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
@@ -33,4 +35,12 @@ class MediaAssetsController < ApplicationController
respond_with(@media_asset)
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

View File

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

View File

@@ -146,7 +146,9 @@ Rails.application.routes.draw do
get :check, to: redirect {|path_params, req| "/iqdb_queries?#{req.query_string}"}
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 :ai_tags, only: [:index]