Skip to content
Extraits de code Groupes Projets
Valider a302e56f rédigé par Eugen Rochko's avatar Eugen Rochko
Parcourir les fichiers

Add API for retrieving favourites

parent 49834a6e
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
# frozen_string_literal: true
class Api::V1::FavouritesController < ApiController
before_action -> { doorkeeper_authorize! :read }
before_action :require_user!
respond_to :json
def index
results = Favourite.where(account: current_account).paginate_by_max_id(DEFAULT_STATUSES_LIMIT, params[:max_id], params[:since_id])
@statuses = cache_collection(Status.where(id: results.map(&:status_id)), Status)
set_maps(@statuses)
set_counters_maps(@statuses)
next_path = api_v1_favourites_url(max_id: results.last.id) if results.size == DEFAULT_ACCOUNTS_LIMIT
prev_path = api_v1_favourites_url(since_id: results.first.id) unless results.empty?
set_pagination_headers(next_path, prev_path)
end
end
......@@ -6,12 +6,14 @@ class FavouriteService < BaseService
# @param [Status] status
# @return [Favourite]
def call(account, status)
raise Mastodon::NotPermitted unless status.permitted?(account)
favourite = Favourite.create!(account: account, status: status)
Pubsubhubbub::DistributionWorker.perform_async(favourite.stream_entry.id)
if status.local?
NotifyService.new.call(status.account, favourite)
NotifyService.new.call(favourite.status.account, favourite)
else
NotificationWorker.perform_async(favourite.stream_entry.id, status.account_id)
end
......
collection @statuses
extends 'api/v1/statuses/show'
......@@ -110,6 +110,7 @@ Rails.application.routes.draw do
end
resources :notifications, only: [:index]
resources :favourites, only: [:index]
resources :accounts, only: [:show] do
collection do
......
require 'rails_helper'
RSpec.describe Api::V1::FavouritesController, type: :controller do
render_views
let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
let(:token) { double acceptable?: true, resource_owner_id: user.id }
before do
allow(controller).to receive(:doorkeeper_token) { token }
end
describe 'GET #index' do
it 'returns http success' do
get :index
expect(response).to have_http_status(:success)
end
end
end
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter