Sha256: 62b93ec41cadfcbfb138d09283e83b4bc04e4c8bb23799b607d3f255775bf9f6

Contents?: true

Size: 1.26 KB

Versions: 2

Compression:

Stored size: 1.26 KB

Contents

module Voicemail
  class MailboxController < ApplicationController
    def run
      if mailbox
        play_greeting
        fail_auth unless authenticate
        play_number_of_messages
        main_menu
      else
        mailbox_not_found
      end
    end

    def authenticate
      current_tries = 0
      auth_ok = false
      while current_tries < config.mailbox.pin_tries
        input = ask config.mailbox.please_enter_pin, terminator: "#", timeout: config.prompt_timeout
        logger.info input.to_s
        logger.info mailbox[:pin].to_s
        auth_ok = true if input.to_s == mailbox[:pin].to_s
        break if auth_ok
        play config.mailbox.pin_wrong
        current_tries += 1
      end
      auth_ok
    end

    def play_number_of_messages
      number = storage.count_new_messages(mailbox[:id])
      if number > 0
        play config.mailbox.number_before
        play_numeric number
        play config.mailbox.number_after
      else
        play config.messages.no_new_messages
      end
    end

    private

    def play_greeting
      play config.mailbox.greeting_message
    end

    def mailbox_not_found
      play config.mailbox_not_found
      hangup
    end

    def fail_auth
      play config.mailbox.could_not_auth
      hangup
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
voicemail-0.2.0 lib/voicemail/mailbox_controller.rb
voicemail-0.1.0 lib/voicemail/mailbox_controller.rb