New API: GET /api/v1/custom_emojis to get a server's custom emojis (#5051)
parent
9c8e602163
commit
293972f716
|
@ -3,7 +3,7 @@
|
||||||
module Admin
|
module Admin
|
||||||
class CustomEmojisController < BaseController
|
class CustomEmojisController < BaseController
|
||||||
def index
|
def index
|
||||||
@custom_emojis = CustomEmoji.where(domain: nil)
|
@custom_emojis = CustomEmoji.local
|
||||||
end
|
end
|
||||||
|
|
||||||
def new
|
def new
|
||||||
|
|
|
@ -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_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 }
|
validates :shortcode, uniqueness: { scope: :domain }, format: { with: /\A#{SHORTCODE_RE_FRAGMENT}\z/ }, length: { minimum: 2 }
|
||||||
|
|
||||||
|
scope :local, -> { where(domain: nil) }
|
||||||
|
|
||||||
include Remotable
|
include Remotable
|
||||||
|
|
||||||
class << self
|
class << self
|
||||||
|
|
|
@ -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 :media_attachments, serializer: REST::MediaAttachmentSerializer
|
||||||
has_many :mentions
|
has_many :mentions
|
||||||
has_many :tags
|
has_many :tags
|
||||||
has_many :emojis
|
has_many :emojis, serializer: REST::CustomEmojiSerializer
|
||||||
|
|
||||||
def id
|
def id
|
||||||
object.id.to_s
|
object.id.to_s
|
||||||
|
@ -119,14 +119,4 @@ class REST::StatusSerializer < ActiveModel::Serializer
|
||||||
tag_url(object)
|
tag_url(object)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
class CustomEmojiSerializer < ActiveModel::Serializer
|
|
||||||
include RoutingHelper
|
|
||||||
|
|
||||||
attributes :shortcode, :url
|
|
||||||
|
|
||||||
def url
|
|
||||||
full_asset_url(object.image.url)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -188,6 +188,7 @@ Rails.application.routes.draw do
|
||||||
end
|
end
|
||||||
|
|
||||||
resources :streaming, only: [:index]
|
resources :streaming, only: [:index]
|
||||||
|
resources :custom_emojis, only: [:index]
|
||||||
|
|
||||||
get '/search', to: 'search#index', as: :search
|
get '/search', to: 'search#index', as: :search
|
||||||
|
|
||||||
|
|
|
@ -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