Add API for retrieving blocked accounts
This commit is contained in:
		
							parent
							
								
									8724094ed0
								
							
						
					
					
						commit
						49834a6e7f
					
				
					 15 changed files with 50 additions and 14 deletions
				
			
		|  | @ -86,3 +86,4 @@ AllCops: | |||
|   - 'config/**/*' | ||||
|   - 'bin/*' | ||||
|   - 'Rakefile' | ||||
|   - 'node_modules/**/*' | ||||
|  |  | |||
							
								
								
									
										21
									
								
								app/controllers/api/v1/blocks_controller.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								app/controllers/api/v1/blocks_controller.rb
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,21 @@ | |||
| # frozen_string_literal: true | ||||
| 
 | ||||
| class Api::V1::BlocksController < ApiController | ||||
|   before_action -> { doorkeeper_authorize! :follow } | ||||
|   before_action :require_user! | ||||
| 
 | ||||
|   respond_to :json | ||||
| 
 | ||||
|   def index | ||||
|     results   = Block.where(account: current_account).paginate_by_max_id(DEFAULT_ACCOUNTS_LIMIT, params[:max_id], params[:since_id]) | ||||
|     accounts  = Account.where(id: results.map(&:target_account_id)).map { |a| [a.id, a] }.to_h | ||||
|     @accounts = results.map { |f| accounts[f.target_account_id] } | ||||
| 
 | ||||
|     set_account_counters_maps(@accounts) | ||||
| 
 | ||||
|     next_path = api_v1_blocks_url(max_id: results.last.id)    if results.size == DEFAULT_ACCOUNTS_LIMIT | ||||
|     prev_path = api_v1_blocks_url(since_id: results.first.id) unless results.empty? | ||||
| 
 | ||||
|     set_pagination_headers(next_path, prev_path) | ||||
|   end | ||||
| end | ||||
|  | @ -1,2 +0,0 @@ | |||
| module Api::OembedHelper | ||||
| end | ||||
|  | @ -1,2 +0,0 @@ | |||
| module Api::V1::FollowRequestsHelper | ||||
| end | ||||
|  | @ -1,2 +1,4 @@ | |||
| # frozen_string_literal: true | ||||
| 
 | ||||
| module AuthorizeFollowHelper | ||||
| end | ||||
|  |  | |||
|  | @ -10,7 +10,7 @@ module StreamEntriesHelper | |||
|   end | ||||
| 
 | ||||
|   def avatar_for_status_url(status) | ||||
|     status.reblog? ? status.reblog.account.avatar.url( :original) : status.account.avatar.url( :original) | ||||
|     status.reblog? ? status.reblog.account.avatar.url(:original) : status.account.avatar.url(:original) | ||||
|   end | ||||
| 
 | ||||
|   def entry_classes(status, is_predecessor, is_successor, include_threads) | ||||
|  |  | |||
|  | @ -1,6 +1,7 @@ | |||
| # frozen_string_literal: true | ||||
| 
 | ||||
| class Block < ApplicationRecord | ||||
|   include Paginable | ||||
|   include Streamable | ||||
| 
 | ||||
|   belongs_to :account | ||||
|  |  | |||
							
								
								
									
										2
									
								
								app/views/api/v1/blocks/index.rabl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								app/views/api/v1/blocks/index.rabl
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,2 @@ | |||
| collection @accounts | ||||
| extends 'api/v1/accounts/show' | ||||
|  | @ -100,6 +100,7 @@ Rails.application.routes.draw do | |||
|       resources :follows,  only: [:create] | ||||
|       resources :media,    only: [:create] | ||||
|       resources :apps,     only: [:create] | ||||
|       resources :blocks,   only: [:index] | ||||
| 
 | ||||
|       resources :follow_requests, only: [:index] do | ||||
|         member do | ||||
|  |  | |||
|  | @ -7,7 +7,6 @@ RSpec.describe Api::V1::AccountsController, type: :controller do | |||
|   let(:token) { double acceptable?: true, resource_owner_id: user.id } | ||||
| 
 | ||||
|   before do | ||||
|     stub_request(:post, "https://pubsubhubbub.superfeedr.com/").to_return(:status => 200, :body => "", :headers => {}) | ||||
|     allow(controller).to receive(:doorkeeper_token) { token } | ||||
|   end | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										19
									
								
								spec/controllers/api/v1/blocks_controller_spec.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								spec/controllers/api/v1/blocks_controller_spec.rb
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,19 @@ | |||
| require 'rails_helper' | ||||
| 
 | ||||
| RSpec.describe Api::V1::BlocksController, 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 | ||||
|  | @ -6,7 +6,6 @@ RSpec.describe Api::V1::TimelinesController, type: :controller do | |||
|   let(:user)  { Fabricate(:user, account: Fabricate(:account, username: 'alice')) } | ||||
| 
 | ||||
|   before do | ||||
|     stub_request(:post, "https://pubsubhubbub.superfeedr.com/").to_return(:status => 200, :body => "", :headers => {}) | ||||
|     allow(controller).to receive(:doorkeeper_token) { token } | ||||
|   end | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,5 +0,0 @@ | |||
| require 'rails_helper' | ||||
| 
 | ||||
| RSpec.describe Api::OembedHelper, type: :helper do | ||||
| 
 | ||||
| end | ||||
		Loading…
	
		Reference in a new issue