New API: GET /api/v1/custom_emojis to get a server's custom emojis (#5051)
This commit is contained in:
		@@ -3,7 +3,7 @@
 | 
			
		||||
module Admin
 | 
			
		||||
  class CustomEmojisController < BaseController
 | 
			
		||||
    def index
 | 
			
		||||
      @custom_emojis = CustomEmoji.where(domain: nil)
 | 
			
		||||
      @custom_emojis = CustomEmoji.local
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def new
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										9
									
								
								app/controllers/api/v1/custom_emojis_controller.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								app/controllers/api/v1/custom_emojis_controller.rb
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
# frozen_string_literal: true
 | 
			
		||||
 | 
			
		||||
class Api::V1::CustomEmojisController < Api::BaseController
 | 
			
		||||
  respond_to :json
 | 
			
		||||
 | 
			
		||||
  def index
 | 
			
		||||
    render json: CustomEmoji.local, each_serializer: REST::CustomEmojiSerializer
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
@@ -26,6 +26,8 @@ class CustomEmoji < ApplicationRecord
 | 
			
		||||
  validates_attachment :image, content_type: { content_type: 'image/png' }, presence: true, size: { in: 0..50.kilobytes }
 | 
			
		||||
  validates :shortcode, uniqueness: { scope: :domain }, format: { with: /\A#{SHORTCODE_RE_FRAGMENT}\z/ }, length: { minimum: 2 }
 | 
			
		||||
 | 
			
		||||
  scope :local, -> { where(domain: nil) }
 | 
			
		||||
 | 
			
		||||
  include Remotable
 | 
			
		||||
 | 
			
		||||
  class << self
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										11
									
								
								app/serializers/rest/custom_emoji_serializer.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								app/serializers/rest/custom_emoji_serializer.rb
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
			
		||||
# frozen_string_literal: true
 | 
			
		||||
 | 
			
		||||
class REST::CustomEmojiSerializer < ActiveModel::Serializer
 | 
			
		||||
  include RoutingHelper
 | 
			
		||||
 | 
			
		||||
  attributes :shortcode, :url
 | 
			
		||||
 | 
			
		||||
  def url
 | 
			
		||||
    full_asset_url(object.image.url)
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
@@ -17,7 +17,7 @@ class REST::StatusSerializer < ActiveModel::Serializer
 | 
			
		||||
  has_many :media_attachments, serializer: REST::MediaAttachmentSerializer
 | 
			
		||||
  has_many :mentions
 | 
			
		||||
  has_many :tags
 | 
			
		||||
  has_many :emojis
 | 
			
		||||
  has_many :emojis, serializer: REST::CustomEmojiSerializer
 | 
			
		||||
 | 
			
		||||
  def id
 | 
			
		||||
    object.id.to_s
 | 
			
		||||
@@ -119,14 +119,4 @@ class REST::StatusSerializer < ActiveModel::Serializer
 | 
			
		||||
      tag_url(object)
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  class CustomEmojiSerializer < ActiveModel::Serializer
 | 
			
		||||
    include RoutingHelper
 | 
			
		||||
 | 
			
		||||
    attributes :shortcode, :url
 | 
			
		||||
 | 
			
		||||
    def url
 | 
			
		||||
      full_asset_url(object.image.url)
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 
 | 
			
		||||
@@ -188,6 +188,7 @@ Rails.application.routes.draw do
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      resources :streaming, only: [:index]
 | 
			
		||||
      resources :custom_emojis, only: [:index]
 | 
			
		||||
 | 
			
		||||
      get '/search', to: 'search#index', as: :search
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										18
									
								
								spec/controllers/api/v1/custom_emojis_controller_spec.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								spec/controllers/api/v1/custom_emojis_controller_spec.rb
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
			
		||||
# frozen_string_literal: true
 | 
			
		||||
 | 
			
		||||
require 'rails_helper'
 | 
			
		||||
 | 
			
		||||
RSpec.describe Api::V1::CustomEmojisController, type: :controller do
 | 
			
		||||
  render_views
 | 
			
		||||
 | 
			
		||||
  describe 'GET #index' do
 | 
			
		||||
    before do
 | 
			
		||||
      Fabricate(:custom_emoji)
 | 
			
		||||
      get :index
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    it 'returns http success' do
 | 
			
		||||
      expect(response).to have_http_status(:success)
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
		Reference in New Issue
	
	Block a user