54 lines
1.3 KiB
Ruby
54 lines
1.3 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
class Api::V1::Antennas::DomainsController < Api::BaseController
|
|
before_action -> { doorkeeper_authorize! :read, :'read:lists' }, only: [:show]
|
|
before_action -> { doorkeeper_authorize! :write, :'write:lists' }, except: [:show]
|
|
|
|
before_action :require_user!
|
|
before_action :set_antenna
|
|
|
|
def show
|
|
@domains = load_domains
|
|
@exclude_domains = load_exclude_domains
|
|
render json: { domains: @domains, exclude_domains: @exclude_domains }
|
|
end
|
|
|
|
def create
|
|
ApplicationRecord.transaction do
|
|
domains.each do |domain|
|
|
@antenna.antenna_domains.create!(name: domain, exclude: false)
|
|
@antenna.update!(any_domains: false) if @antenna.any_domains
|
|
end
|
|
end
|
|
|
|
render_empty
|
|
end
|
|
|
|
def destroy
|
|
AntennaDomain.where(antenna: @antenna, name: domains).destroy_all
|
|
@antenna.update!(any_domains: true) unless @antenna.antenna_domains.where(exclude: false).any?
|
|
render_empty
|
|
end
|
|
|
|
private
|
|
|
|
def set_antenna
|
|
@antenna = Antenna.where(account: current_account).find(params[:antenna_id])
|
|
end
|
|
|
|
def load_domains
|
|
@antenna.antenna_domains.pluck(:name)
|
|
end
|
|
|
|
def load_exclude_domains
|
|
@antenna.exclude_domains || []
|
|
end
|
|
|
|
def domains
|
|
Array(resource_params[:domains])
|
|
end
|
|
|
|
def resource_params
|
|
params.permit(domains: [])
|
|
end
|
|
end
|