New API: GET /api/v1/custom_emojis to get a server's custom emojis (#5051)
This commit is contained in:
parent
9c8e602163
commit
293972f716
7 changed files with 43 additions and 12 deletions
|
@ -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
|
Loading…
Reference in a new issue