# app/services/notificacao/cliente_twilio.rb
#
# Monta o Twilio::REST::Client com timeout. Sem timeout, uma saída de internet
# bloqueada no servidor pendura o worker Puma até o proxy cortar a requisição —
# e o botão "enviar teste" da tela ficaria girando sem resposta.
#
# O construtor com http_client é posicional na twilio-ruby 7.x
# (username, password, account_sid, region, http_client). Se a assinatura mudar
# numa atualização da gem, cai no construtor simples em vez de quebrar o envio.
module Notificacao
  module ClienteTwilio
    TIMEOUT = 15

    def self.montar(sid, token)
      require 'twilio-ruby'

      begin
        http = Twilio::HTTP::Client.new(timeout: TIMEOUT)
        Twilio::REST::Client.new(sid, token, nil, nil, http)
      rescue ArgumentError, NameError => e
        Rails.logger.warn("[ClienteTwilio] sem timeout customizado (#{e.class}: #{e.message})")
        Twilio::REST::Client.new(sid, token)
      end
    end
  end
end
