FEATURE: Handle secure uploads in image caption (#476)

This commit is contained in:
Rafael dos Santos Silva 2024-02-19 18:08:19 -03:00 committed by GitHub
parent a9b2d6a30a
commit cf19ce0d72
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 13 additions and 3 deletions

View File

@ -109,11 +109,16 @@ module DiscourseAi
image_url = params[:image_url]
raise Discourse::InvalidParameters.new(:image_url) if !image_url
image = Upload.where(url: params[:image_url])
image = Upload.find_by(sha1: Upload.sha1_from_long_url(image_url))
if image&.secure?
url = Upload.signed_url_from_secure_uploads_url(image_url)
else
url = UrlHelper.absolute(image_url)
end
hijack do
caption =
DiscourseAi::AiHelper::Assistant.new.generate_image_caption(image_url, current_user)
caption = DiscourseAi::AiHelper::Assistant.new.generate_image_caption(url, current_user)
render json: { caption: caption }, status: 200
end
rescue DiscourseAi::Completions::Endpoints::Base::CompletionFailed, Net::HTTPBadResponse

View File

@ -10,7 +10,11 @@ export default apiInitializer("1.25.0", (api) => {
class: "generate-caption",
};
const imageCaptionPopup = api.container.lookup("service:imageCaptionPopup");
const settings = api.container.lookup("service:site-settings");
if (!settings.ai_helper_enabled_features.includes("image_caption")) {
return;
}
api.addComposerImageWrapperButton(
buttonAttrs.label,
buttonAttrs.class,

View File

@ -224,6 +224,7 @@ discourse_ai:
choices:
- "suggestions"
- "context_menu"
- "image_caption"
ai_helper_image_caption_model:
default: "llava"
type: enum