27 lines
970 B
Ruby
27 lines
970 B
Ruby
# 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
|