Files
MySMSAPio/app/controllers/api/v1/gateway/registrations_controller.rb
2025-10-22 17:22:17 +08:00

54 lines
1.4 KiB
Ruby

module Api
module V1
module Gateway
class RegistrationsController < ApplicationController
skip_before_action :authenticate_api_key!, only: [:create]
def create
device_id = params.require(:device_id)
name = params[:name] || "Gateway #{device_id[0..7]}"
# Check if gateway already exists
gateway = ::Gateway.find_by(device_id: device_id)
if gateway
render json: {
success: false,
error: "Gateway already registered"
}, status: :conflict
return
end
# Create new gateway
gateway = ::Gateway.new(
device_id: device_id,
name: name,
status: "offline"
)
raw_key = gateway.generate_api_key!
render json: {
success: true,
api_key: raw_key,
device_id: gateway.device_id,
websocket_url: websocket_url
}, status: :created
rescue ActionController::ParameterMissing => e
render json: { error: e.message }, status: :bad_request
end
private
def websocket_url
if Rails.env.production?
"wss://#{request.host}/cable"
else
"ws://#{request.host}:#{request.port}/cable"
end
end
end
end
end
end