Class: WhatsAppNotifier::WebAdapter

Inherits:
Object
  • Object
show all
Defined in:
lib/whatsapp_notifier/web_adapter.rb

Instance Method Summary collapse

Constructor Details

#initialize(base_url: ENV.fetch("WHATSAPP_NOTIFIER_SERVICE_URL", "http://127.0.0.1:3001")) ⇒ WebAdapter

Returns a new instance of WebAdapter.



7
8
9
# File 'lib/whatsapp_notifier/web_adapter.rb', line 7

def initialize(base_url: ENV.fetch("WHATSAPP_NOTIFIER_SERVICE_URL", "http://127.0.0.1:3001"))
  @base_url = base_url
end

Instance Method Details

#connection_status(metadata: {}) ⇒ Object



34
35
36
37
38
39
40
41
42
# File 'lib/whatsapp_notifier/web_adapter.rb', line 34

def connection_status(metadata: {})
  user_id = user_id_from()
  response = request(:get, "/status/#{user_id}")
  {
    state: response["state"],
    authenticated: response["authenticated"],
    has_qr: response["hasQR"]
  }
end

#fetch_qr_code(metadata: {}) ⇒ Object



28
29
30
31
32
# File 'lib/whatsapp_notifier/web_adapter.rb', line 28

def fetch_qr_code(metadata: {})
  user_id = user_id_from()
  response = request(:get, "/qr/#{user_id}")
  response["qr"]
end

#send_message(payload:, session: {}) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/whatsapp_notifier/web_adapter.rb', line 11

def send_message(payload:, session: {})
  user_id = user_id_from(payload[:metadata] || {})
  body = {
    to: payload[:to],
    message: payload[:body],
    mediaUrl: payload.dig(:metadata, :media_url)
  }.compact

  response = request(:post, "/send/#{user_id}", body: body)
  {
    success: response.fetch("success"),
    message_id: payload[:idempotency_key] || "local-#{Time.now.to_i}",
    session: session,
    error_message: response["error"]
  }
end