From 12890945e527c2803ad5a85ca4afbe1017c34025 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Fri, 26 Dec 2014 11:26:24 +0000 Subject: [PATCH] Allow attachment thumbnails from REST API (#18707). git-svn-id: http://svn.redmine.org/redmine/trunk@13806 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/controllers/attachments_controller.rb | 2 +- app/helpers/attachments_helper.rb | 4 ++++ test/integration/api_test/attachments_test.rb | 15 +++++++++++++++ test/test_helper.rb | 4 ++++ 4 files changed, 24 insertions(+), 1 deletion(-) diff --git a/app/controllers/attachments_controller.rb b/app/controllers/attachments_controller.rb index d9357fbbd..e622d8086 100644 --- a/app/controllers/attachments_controller.rb +++ b/app/controllers/attachments_controller.rb @@ -22,7 +22,7 @@ class AttachmentsController < ApplicationController before_filter :delete_authorize, :only => :destroy before_filter :authorize_global, :only => :upload - accept_api_auth :show, :download, :upload + accept_api_auth :show, :download, :thumbnail, :upload def show respond_to do |format| diff --git a/app/helpers/attachments_helper.rb b/app/helpers/attachments_helper.rb index 387ed99d7..ed362e2e8 100644 --- a/app/helpers/attachments_helper.rb +++ b/app/helpers/attachments_helper.rb @@ -54,6 +54,10 @@ module AttachmentsHelper api.content_type attachment.content_type api.description attachment.description api.content_url download_named_attachment_url(attachment, attachment.filename) + if attachment.thumbnailable? + api.thumbnail_url thumbnail_url(attachment) + end + api.content_url download_named_attachment_url(attachment, attachment.filename) api.author(:id => attachment.author.id, :name => attachment.author.name) if attachment.author api.created_on attachment.created_on end diff --git a/test/integration/api_test/attachments_test.rb b/test/integration/api_test/attachments_test.rb index bff956e80..ed6ebec95 100644 --- a/test/integration/api_test/attachments_test.rb +++ b/test/integration/api_test/attachments_test.rb @@ -47,6 +47,15 @@ class Redmine::ApiTest::AttachmentsTest < Redmine::ApiTest::Base end end + test "GET /attachments/:id.xml for image should include thumbnail_url" do + get '/attachments/16.xml', {}, credentials('jsmith') + assert_response :success + assert_equal 'application/xml', @response.content_type + assert_select 'attachment id:content(16)' do + assert_select '~ thumbnail_url', :text => 'http://www.example.com/attachments/thumbnail/16' + end + end + test "GET /attachments/:id.xml should deny access without credentials" do get '/attachments/7.xml' assert_response 401 @@ -66,6 +75,12 @@ class Redmine::ApiTest::AttachmentsTest < Redmine::ApiTest::Base set_tmp_attachments_directory end + test "GET /attachments/thumbnail/:id should return the thumbnail" do + skip unless convert_installed? + get '/attachments/thumbnail/16', {}, credentials('jsmith') + assert_response :success + end + test "POST /uploads.xml should return the token" do set_tmp_attachments_directory assert_difference 'Attachment.count' do diff --git a/test/test_helper.rb b/test/test_helper.rb index 22b96a809..bc2d178c1 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -131,6 +131,10 @@ class ActiveSupport::TestCase Redmine::Thumbnail.convert_available? end + def convert_installed? + self.class.convert_installed? + end + # Returns the path to the test +vendor+ repository def self.repository_path(vendor) path = Rails.root.join("tmp/test/#{vendor.downcase}_repository").to_s -- 2.39.5