def __init__(self): self.options = None self.client = RestClient()
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)
def test_send_sms(): real = RestClient() #Normal call real.send_sms = Mock() real.send_sms(['+13233333333'], 'message', False, '+18183333333')
def test_send_sms_server_not_found(): real = RestClient() real.send_sms = Mock(side_effect=ServerNotFoundError('Server not found, dude.')).return_value = 2
def __init__(self): self.options = None self.client = RestClient()
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)