#!/usr/bin/env python
# vim: sw=3 et:
'''
Copyright (C) 2013, Digium, Inc.

Nitesh Bansal
Matthew Nicholson <mnicholson@digium.com>
Jonathan Rose <jrose@digium.com>

This program is free software, distributed under the terms of
the GNU General Public License Version 2.
'''

import sys
import logging
import re
import os
import shutil

from twisted.internet import reactor
sys.path.append("lib/python")
from asterisk.test_case import TestCase

logger = logging.getLogger(__name__)

class VoxFaxG711(TestCase):

    def __init__(self):
        TestCase.__init__(self)
        self.reactor_timeout = 180
        self.calling_asterisk = None
        self.receiving_asterisk = None
        self.create_asterisk(2)

        # copy the tiff file we are going to send to a good known location
        shutil.copy("%s/send.tiff" % (os.path.dirname(os.path.realpath(__file__)),), "%s%s" % (self.ast[1].base, self.ast[1].directories['astdatadir']))

    def ami_connect(self, ami):
        if ami.id == 0:
            logger.info("Asterisk 1 fully started")
            self.receiving_asterisk = ami

        if ami.id == 1:
            logger.info("Asterisk 2 fully started")
            self.calling_asterisk = ami

        if (self.calling_asterisk is not None and self.receiving_asterisk is not None):
            #Both the asterisk have booted, setup the call
            self.calling_asterisk.registerEvent('UserEvent', self.fax_result)
            df = self.calling_asterisk.originate(channel = "sip/ast1-g711/1234", context = "sendfax", exten = "1234", priority = "1")

    def fax_result(self, ami, event):
        if event['userevent'] != 'FaxFinished':
            return

        logger.info("Status Received %s" % event['status'])
        logger.info("Status String Received %s" % event['statusstr'])
        logger.info("Error String Received %s" % event['error'])

        if event['statusstr'] == "OK":
            self.passed = 1

        self.stop_reactor()

    def run(self):
        TestCase.run(self)
        self.create_ami_factory(2)

def main():
    test = VoxFaxG711()
    reactor.run()
    if not test.passed:
       return 1

    return 0

if __name__ == "__main__":
    sys.exit(main() or 0)

