jam-cloud/admin/app/controllers/arses_controller.rb

99 lines
2.9 KiB
Ruby
Raw Normal View History

2020-06-03 04:14:39 +00:00
class ArsesController < ApplicationController
respond_to :json
2026-02-16 04:04:17 +00:00
def index
if params[:code] != Rails.application.config.data_dump_code
render :json => {error: "Unauthorized"}, :status => 401
return
end
2026-02-16 15:05:12 +00:00
@arses = JamRuby::Ars.all
2026-02-16 04:04:17 +00:00
render :json => @arses
end
def update
if params[:code] != Rails.application.config.data_dump_code
render :json => {error: "Unauthorized"}, :status => 401
return
end
2026-02-16 15:05:12 +00:00
begin
# Primary ID lookup
@ars = JamRuby::Ars.find_by_id(params[:id])
# Explicit secondary lookups if primary ID fails
@ars ||= JamRuby::Ars.find_by_id_int(params[:id_int]) if params[:id_int]
@ars ||= JamRuby::Ars.find_by_name(params[:name]) if params[:name]
2026-02-16 04:04:17 +00:00
2026-02-16 15:05:12 +00:00
if @ars.nil?
render :json => {error: "Not Found"}, :status => 404
return
end
2026-02-16 04:04:17 +00:00
2026-02-16 15:05:12 +00:00
allowed = [:password, :username, :active, :beta, :name, :provider, :id_int, :ip, :port, :continent, :country, :city, :subdivision, :latitude, :longitude]
update_hash = {}
allowed.each do |attr|
update_hash[attr] = params[attr] if params.has_key?(attr)
end
if @ars.update_attributes(update_hash, as: :admin)
render :json => @ars, :status => :ok
else
render :json => @ars.errors, :status => :unprocessable_entity
end
rescue => e
render :json => {error: e.message, backtrace: e.backtrace.first(5)}, :status => 500
2026-02-16 04:04:17 +00:00
end
end
2020-06-03 04:14:39 +00:00
# create or update a client_artifact row
def get_or_create
2026-02-16 15:05:12 +00:00
begin
name = params[:name]
provider = params[:provider]
active = params[:active]
2026-02-21 14:56:52 +00:00
beta = params.has_key?(:beta) ? params[:beta] : true
2026-02-16 15:05:12 +00:00
ip = params[:ip]
username = params[:username]
password = params[:password]
topology = params[:topology]
ars_id = params[:ars_id]
2020-06-03 04:14:39 +00:00
2026-02-16 15:05:12 +00:00
# Explicit field-based lookups
ars = nil
ars = JamRuby::Ars.find_by_id_int(ars_id) if ars_id
ars ||= JamRuby::Ars.find_by_name(name) if name
2020-06-03 04:14:39 +00:00
2026-02-16 15:05:12 +00:00
if ars.nil?
ars = JamRuby::Ars.new
ars.name = name
end
2020-06-03 04:14:39 +00:00
2026-02-16 15:05:12 +00:00
ars.id_int = ars_id if !ars_id.nil?
ars.provider = provider
ars.active = active
2026-03-01 02:39:34 +00:00
ars.beta = params[:beta]
2026-02-21 14:56:52 +00:00
ars.beta = beta
2026-02-16 15:05:12 +00:00
ars.ip = ip
ars.password = password
ars.username = username
if topology
ars.city = topology['city']
ars.country = topology['country']
ars.continent = topology['continent']
ars.latitude = topology['latitude']
ars.longitude = topology['longitude']
ars.subdivision = topology['subdivision']
2021-04-29 19:13:32 +00:00
end
2026-02-16 15:05:12 +00:00
ars.save!
2021-04-29 19:13:32 +00:00
2026-02-16 15:05:12 +00:00
@ars = ars
2026-02-21 14:56:52 +00:00
render :json => {id_int: @ars.id_int, id: @ars.id, name: @ars.name, provider: @ars.provider, active: @ars.active, beta: @ars.beta, ip: @ars.ip}, :status => :ok
2026-02-16 15:05:12 +00:00
rescue => e
render :json => {error: e.message, backtrace: e.backtrace.first(5)}, :status => 500
2020-06-03 04:14:39 +00:00
end
end
end