コード例 #1
0
ファイル: cli.py プロジェクト: xXxn0b0d3xXx/twerp
 def __init__(self):
     self.options = None
     self.client = RestClient()
コード例 #2
0
ファイル: cli.py プロジェクト: xXxn0b0d3xXx/twerp
class Twerp(object):
    """
    Main class for twerp optparse CLI
    """
    def __init__(self):
        self.options = None
        self.client = RestClient()

    def set_log_level(self):
        """
        Set log level according to command-line options

        @returns: logger object
        """
        log_format = '%(message)s'

        logging.basicConfig(level=logging.ERROR, format=log_format)
        logger = logging.getLogger("twerp")

        if self.options.debug:
            logger.setLevel(logging.DEBUG)
        elif self.options.verbose:
            logger.setLevel(logging.INFO)
        return logger

    def run(self):
        """
        Perform actions based on CLI options

        @returns: status code
        """
        opt_parser = setup_opt_parser()
        (self.options, remaining_args) = opt_parser.parse_args()
        self.logger = self.set_log_level()

        if self.options.numbers:
            return self.client.list_numbers(self.options.verbose)
        elif self.options.dial:
            if not self.options.url and not self.options.say:
                self.logger.error("You must specify a --url with TwiML " +
                                  "or --say something")
                return 1
            numbers = self.options.dial.split(",")
            sid = self.client.call_numbers(numbers, self.options.verbose,
                                           self.options.callerid,
                                           self.options.url, self.options.say)
            if self.options.interactive:
                Interactive(self.client).cmdloop(sid)
                return
        elif self.options.conference:
            if not self.options.room:
                self.logger.error("You must specify a --room to join.")
                return 1
            numbers = self.options.conference.split(",")
            sid = self.client.create_conference(numbers, self.options.room,
                                                self.options.verbose,
                                                self.options.callerid)
            if self.options.interactive:
                Interactive(self.client).cmdloop(sid)
            return
        elif self.options.purchase:
            return self.client.purchase_number(self.options.purchase)
        elif self.options.contains and self.options.areacode:
            return self.client.numbers_contain_areacode(
                self.options.areacode, self.options.contains)
        elif self.options.contains:
            return self.client.numbers_contain(self.options.contains)
        elif self.options.areacode:
            return self.client.search_numbers(self.options.areacode)
        elif self.options.rename_account:
            self.client.rename_account(self.options.rename_account)
        elif self.options.list_accounts:
            self.client.list_accounts()
        elif self.options.rename_account:
            self.client.create_subaccount(self.options.create_subaccount)
        elif self.options.applications:
            return self.client.list_applications()
        elif self.options.participants:
            return self.client.list_conference_participants()
        elif self.options.conferences:
            return self.client.list_conferences()
        elif self.options.listsms:
            return self.client.list_sms()
        elif self.options.twerp_version:
            return self.twerp_version()
        elif self.options.sid:
            return self.client.get_sms_sid(self.options.sid)
        elif self.options.sms_recipients:
            numbers = self.options.sms_recipients.split(",")
            return self.client.send_sms(numbers, self.options.sms_message,
                                        self.options.verbose)
        elif self.options.notifications:
            return self.client.notifications(self.options.verbose)
        elif self.options.interactive:
            Interactive(self.client).cmdloop('')
            return
        else:
            opt_parser.print_help()
        return 1

    def twerp_version(self):
        """
        Show twerp's version

        @returns: None
        """
        print("twerp version %s" % VERSION)
コード例 #3
0
ファイル: test_twiliolib.py プロジェクト: xXxn0b0d3xXx/twerp
def test_send_sms():

    real = RestClient()
    #Normal call
    real.send_sms = Mock()
    real.send_sms(['+13233333333'], 'message', False, '+18183333333')
コード例 #4
0
ファイル: test_twiliolib.py プロジェクト: xXxn0b0d3xXx/twerp
def test_send_sms_server_not_found():

    real = RestClient()
    real.send_sms = Mock(side_effect=ServerNotFoundError('Server not found, dude.')).return_value = 2
コード例 #5
0
ファイル: cli.py プロジェクト: cakebread/twerp
 def __init__(self):
     self.options = None
     self.client = RestClient()
コード例 #6
0
ファイル: cli.py プロジェクト: cakebread/twerp
class Twerp(object):

    """
    Main class for twerp optparse CLI
    """

    def __init__(self):
        self.options = None
        self.client = RestClient()

    def set_log_level(self):
        """
        Set log level according to command-line options

        @returns: logger object
        """
        log_format = '%(message)s'

        logging.basicConfig(level=logging.ERROR, format=log_format)
        logger = logging.getLogger("twerp")

        if self.options.debug:
            logger.setLevel(logging.DEBUG)
        elif self.options.verbose:
            logger.setLevel(logging.INFO)
        return logger

    def run(self):
        """
        Perform actions based on CLI options

        @returns: status code
        """
        opt_parser = setup_opt_parser()
        (self.options, remaining_args) = opt_parser.parse_args()
        self.logger = self.set_log_level()

        if self.options.numbers:
            return self.client.list_numbers(self.options.verbose)
        elif self.options.dial:
            if not self.options.url and not self.options.say:
                self.logger.error("You must specify a --url with TwiML " +
                    "or --say something")
                return 1
            numbers = self.options.dial.split(",")
            sid = self.client.call_numbers(numbers, self.options.verbose,
                    self.options.callerid, self.options.url,
                    self.options.say)
            if self.options.interactive:
                Interactive(self.client).cmdloop(sid)
                return
        elif self.options.conference:
            if not self.options.room:
                self.logger.error("You must specify a --room to join.")
                return 1
            numbers = self.options.conference.split(",")
            sid = self.client.create_conference(numbers,
                    self.options.room,
                    self.options.verbose,
                    self.options.callerid)
            if self.options.interactive:
                Interactive(self.client).cmdloop(sid)
            return
        elif self.options.purchase:
            return self.client.purchase_number(self.options.purchase)
        elif self.options.contains and self.options.areacode:
            return self.client.numbers_contain_areacode(
                    self.options.areacode,
                    self.options.contains)
        elif self.options.contains:
            return self.client.numbers_contain(self.options.contains)
        elif self.options.areacode:
            return self.client.search_numbers(self.options.areacode)
        elif self.options.rename_account:
             self.client.rename_account(self.options.rename_account)
        elif self.options.list_accounts:
             self.client.list_accounts()
        elif self.options.rename_account:
             self.client.create_subaccount(self.options.create_subaccount)
        elif self.options.applications:
            return self.client.list_applications()
        elif self.options.participants:
            return self.client.list_conference_participants()
        elif self.options.conferences:
            return self.client.list_conferences()
        elif self.options.listsms:
            return self.client.list_sms()
        elif self.options.twerp_version:
            return self.twerp_version()
        elif self.options.sid:
            return self.client.get_sms_sid(self.options.sid)
        elif self.options.sms_recipients:
            numbers = self.options.sms_recipients.split(",")
            return self.client.send_sms(numbers, self.options.sms_message,
                    self.options.verbose)
        elif self.options.notifications:
            return self.client.notifications(self.options.verbose)
        elif self.options.interactive:
            Interactive(self.client).cmdloop('')
            return
        else:
            opt_parser.print_help()
        return 1

    def twerp_version(self):
        """
        Show twerp's version

        @returns: None
        """
        print("twerp version %s" % VERSION)