refactor and review changes

This commit is contained in:
Tanmay Deep Sharma
2025-07-11 15:45:24 +07:00
parent e4d778de21
commit ac9c24e0aa
10 changed files with 92 additions and 82 deletions
@@ -0,0 +1,53 @@
class Api::V1::Accounts::Whatsapp::AuthorizationsController < Api::V1::Accounts::BaseController
# POST /api/v1/accounts/:account_id/whatsapp/authorization
# Handles the embedded signup callback data from the Facebook SDK
def create
validate_embedded_signup_params!
channel = process_embedded_signup
render_success_response(channel.inbox)
rescue StandardError => e
render_error_response(e)
end
private
def process_embedded_signup
service = Whatsapp::EmbeddedSignupService.new(
account: Current.account,
code: params[:code],
business_id: params[:business_id],
waba_id: params[:waba_id],
phone_number_id: params[:phone_number_id]
)
service.perform
end
def render_success_response(inbox)
render json: {
success: true,
id: inbox.id,
name: inbox.name,
channel_type: 'whatsapp'
}
end
def render_error_response(error)
Rails.logger.error "[WHATSAPP AUTHORIZATION] Embedded signup error: #{error.message}"
Rails.logger.error error.backtrace.join("\n")
render json: {
success: false,
error: error.message
}, status: :unprocessable_entity
end
def validate_embedded_signup_params!
missing_params = []
missing_params << 'code' if params[:code].blank?
missing_params << 'business_id' if params[:business_id].blank?
missing_params << 'waba_id' if params[:waba_id].blank?
return if missing_params.empty?
raise ArgumentError, "Required parameters are missing: #{missing_params.join(', ')}"
end
end
@@ -1,54 +0,0 @@
class Api::V1::Accounts::Whatsapp::CallbacksController < Api::V1::Accounts::BaseController
before_action :validate_whatsapp_params, only: [:embedded_signup]
def embedded_signup
channel = process_signup
@inbox = channel.inbox
rescue StandardError => e
handle_signup_error(e)
end
def config
render json: {
status: 'ready',
app_id: GlobalConfigService.load('WHATSAPP_APP_ID', ''),
config_id: GlobalConfigService.load('WHATSAPP_CONFIGURATION_ID', '')
}
end
private
def validate_whatsapp_params
return render_error('Missing authorization code', 'Authorization code is required') if params[:code].blank?
return render_error('Missing business_id', 'business_id is required') if params[:business_id].blank?
return render_error('Missing waba_id', 'waba_id is required') if params[:waba_id].blank?
end
def render_error(error, message)
render json: {
error: error,
message: message
}, status: :bad_request
end
def process_signup
service = Whatsapp::EmbeddedSignupService.new(
account: Current.account,
code: params[:code],
business_id: params[:business_id],
waba_id: params[:waba_id],
phone_number_id: params[:phone_number_id]
)
service.perform
end
def handle_signup_error(error)
Rails.logger.error("[WHATSAPP] Embedded signup processing error: #{error.message}")
Rails.logger.error(error.backtrace.join("\n"))
render json: {
error: 'signup_failed',
message: error.message
}, status: :bad_request
end
end