def send_status(self, *jobids): results = [] jobid_list = ','.join(jobids) resp = self.send_post('status', { 'jobids[]': jobid_list, 'pagecount': '1', }) data = handle_error(resp, ok_status=('ERR06',)) if data.startswith('ERR06'): return results data += resp.read() for line in data.splitlines(): # jobid, commid, destname, destnum, shortstatus, longstatus, sendtime, completetime, xmittime, pagecount record = line.split('\t') results.append( SendJobStatus( int(record[0]), int(record[1]), record[2], record[3], record[4], record[5], make_time(record[6]), make_time(record[7]), make_delta(record[8]), int(record[9]), ) ) return results
def list_dids(self, area_code=None, npa_nxx=None): if area_code: arguments['ac'] = area_code if npa_nxx: arguments['npanxx'] = npa_nxx resp = self.send_post('listdids', arguments) data = handle_error(resp) data += resp.read() return data.splitlines()
def recv_fax(self, jobid, file_obj=None, file_name=None): if file_name: file_obj = open('file_name', 'w') if not file_obj: raise Exception('Please provide file_name or file_obj!') resp = self.send_post('getfax', { 'faxid': jobid, }) data = handle_error(resp) cont_disp = resp.getheader('content-disposition', False) file_obj.write(resp.read())
def list_npa_nxx(self, area_code=None): results = [] arguments = {} if area_code: arguments['ac'] = area_code resp = self.send_post('listnpanxx', arguments) data = handle_error(resp) data += resp.read() for line in resp.splitlines(): # rc, rcstate record = line.split('\t') results.append( NPA_NXXStatus( record[0], record[1], ) ) return results
def send_fax(self, recip_fax, file_names, recip_name=None, sender_name=None, sender_fax=None, file_objs=None): if not file_objs: file_objs = [] for file_name in file_names: file_objs.append(file(file_name, 'r')) fax_data_b64 = [] for file_obj in file_objs: fax_data = file_obj.read() fax_data_b64.append(base64.b64encode(fax_data)) document_names = map(os.path.basename, file_names) resp = self.send_post('sendfax', { 'faxfilenames[]': document_names, 'faxfiledata[]': fax_data_b64, 'faxno': recip_fax, 'recipname': recip_name or '', 'tagname': sender_name or '', 'tagnumber': sender_fax or '', }) data = handle_error(resp) data += resp.read() ignore, jobid = data.split(':') return int(jobid.strip())
def recv_status(self): results = [] resp = self.send_post('listfax', { 'filename': '1', 'starttime': '1', }) data = handle_error(resp, ok_status=('ERR11', )) if data.startswith('ERR11'): return results data += resp.read() for line in data.splitlines(): # recvid, recvdate, starttime, CID, DNIS, filename record = line.split('\t') results.append( RecvJobStatus( int(record[0]), make_date(record[1]), make_date(record[2]), record[2], record[3], record[4], ) ) return results
def release(self, dids): for did in dids: resp = self.send_post('unprovdid', { 'didnumber': did }) handle_error(resp)
def allocate(self, *dids): for did in dids: resp = self.send_post('provdid', { 'didnumber': did }) handle_error(resp)
def list_area_codes(self): resp = self.send_post('listac') data = handle_error(resp) data += resp.read() return data.splitlines()
def send_delete(self, *jobids): for jobid in jobids: resp = self.send_post('clear', { 'jobid': jobid }) handle_error(resp)
def line_enable(self, *dids): for did in dids: resp = self.send_post('enabledid', { 'didnumber': did, }) handle_error(resp)
def recv_cancel(self, *jobids): for jobid in jobids: resp = self.send_post('stopfax', { 'faxid': jobid, }) handle_error(resp)
def recv_delete(self, *jobids): for jobid in jobids: resp = self.send_post('delfax', { 'faxid': jobid, }) handle_error(resp)