Class: Whatsapp::Generators::WebhookGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Defined in:
lib/generators/whatsapp/webhook/webhook_generator.rb

Instance Method Summary collapse

Instance Method Details

#add_routesObject



18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/generators/whatsapp/webhook/webhook_generator.rb', line 18

def add_routes
  route_content = <<~RUBY
    namespace :whatsapp do
        resources :sessions, only: [:index, :show], param: :session_id do
          member do
            post :connect
            post :disconnect
          end
        end
      end
  RUBY

  route route_content
end

#create_message_handlerObject



10
11
12
# File 'lib/generators/whatsapp/webhook/webhook_generator.rb', line 10

def create_message_handler
  template "message_handler.rb.tt", "app/handlers/whatsapp_message_handler.rb"
end

#create_sessions_controllerObject



14
15
16
# File 'lib/generators/whatsapp/webhook/webhook_generator.rb', line 14

def create_sessions_controller
  template "sessions_controller.rb.tt", "app/controllers/whatsapp/sessions_controller.rb"
end

#show_post_installObject



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/generators/whatsapp/webhook/webhook_generator.rb', line 46

def show_post_install
  say ""
  say "whatsapp:webhook installed!", :green
  say ""
  say "Created:"
  say "  app/handlers/whatsapp_message_handler.rb  — handle incoming messages"
  say "  app/controllers/whatsapp/sessions_controller.rb — manage sessions"
  say ""
  say "Routes added:"
  say "  GET    /whatsapp/sessions              — list sessions"
  say "  GET    /whatsapp/sessions/:id           — session detail + QR"
  say "  POST   /whatsapp/sessions/:id/connect   — connect a session"
  say "  POST   /whatsapp/sessions/:id/disconnect — disconnect a session"
  say ""
  say "Next steps:"
  say "  1. Edit app/handlers/whatsapp_message_handler.rb"
  say "  2. Add authentication to Whatsapp::SessionsController"
  say "  3. Add `has_whatsapp :phone, account: true` to your model"
  say ""
end

#update_initializerObject



33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/generators/whatsapp/webhook/webhook_generator.rb', line 33

def update_initializer
  initializer_path = "config/initializers/whatsapp.rb"
  return unless File.exist?(File.join(destination_root, initializer_path))

  inject_into_file initializer_path, before: /^end\s*\z/ do
    <<~RUBY

      # Message handler — receives all incoming WhatsApp messages
      config.message_handler = "WhatsappMessageHandler"
    RUBY
  end
end