Improve spec coverage and clean up api/v1/domain_blocks controller (#3466)
This commit is contained in:
		
					parent
					
						
							
								9c7505489f
							
						
					
				
			
			
				commit
				
					
						84dda45df9
					
				
			
		
					 2 changed files with 45 additions and 7 deletions
				
			
		|  | @ -1,18 +1,16 @@ | |||
| # frozen_string_literal: true | ||||
| 
 | ||||
| class Api::V1::DomainBlocksController < ApiController | ||||
|   BLOCK_LIMIT = 100 | ||||
| 
 | ||||
|   before_action -> { doorkeeper_authorize! :follow } | ||||
|   before_action :require_user! | ||||
|   after_action :insert_pagination_headers, only: :show | ||||
| 
 | ||||
|   respond_to :json | ||||
| 
 | ||||
|   def show | ||||
|     @blocks = AccountDomainBlock.where(account: current_account).paginate_by_max_id(limit_param(100), params[:max_id], params[:since_id]) | ||||
| 
 | ||||
|     next_path = api_v1_domain_blocks_url(pagination_params(max_id: @blocks.last.id))    if @blocks.size == limit_param(100) | ||||
|     prev_path = api_v1_domain_blocks_url(pagination_params(since_id: @blocks.first.id)) unless @blocks.empty? | ||||
| 
 | ||||
|     set_pagination_headers(next_path, prev_path) | ||||
|     @blocks = load_domain_blocks | ||||
|     render json: @blocks.map(&:domain) | ||||
|   end | ||||
| 
 | ||||
|  | @ -28,6 +26,46 @@ class Api::V1::DomainBlocksController < ApiController | |||
| 
 | ||||
|   private | ||||
| 
 | ||||
|   def load_domain_blocks | ||||
|     account_domain_blocks.paginate_by_max_id( | ||||
|       limit_param(BLOCK_LIMIT), | ||||
|       params[:max_id], | ||||
|       params[:since_id] | ||||
|     ) | ||||
|   end | ||||
| 
 | ||||
|   def account_domain_blocks | ||||
|     current_account.domain_blocks | ||||
|   end | ||||
| 
 | ||||
|   def insert_pagination_headers | ||||
|     set_pagination_headers(next_path, prev_path) | ||||
|   end | ||||
| 
 | ||||
|   def next_path | ||||
|     if records_continue? | ||||
|       api_v1_domain_blocks_url pagination_params(max_id: pagination_max_id) | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def prev_path | ||||
|     unless @blocks.empty? | ||||
|       api_v1_domain_blocks_url pagination_params(since_id: pagination_since_id) | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def pagination_max_id | ||||
|     @blocks.last.id | ||||
|   end | ||||
| 
 | ||||
|   def pagination_since_id | ||||
|     @blocks.first.id | ||||
|   end | ||||
| 
 | ||||
|   def records_continue? | ||||
|     @blocks.size == limit_param(BLOCK_LIMIT) | ||||
|   end | ||||
| 
 | ||||
|   def pagination_params(core_params) | ||||
|     params.permit(:limit).merge(core_params) | ||||
|   end | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue