def recv(self, text, dst=None): msg = { 'src': self.name, 'text': text, } if dst: msg['dst'] = dst msg = json.dumps(msg) logging.debug('Sending json to server: %s' % msg) status, response = request('POST', '%s/message' % self.server, msg) if status != 200: logging.error('Error sending message: %s, %s' % (status, response))
def register(self, url, name=None): if not name: name = self.name app = { 'name': name, 'url': url, } app = json.dumps(app) status, response = request('POST', '%s/app' % self.server, app) if status != 200: logging.error('Error registering app %s: %s, %s' % (self.name, status, response)) else: logging.info('Registered %s as %s' % (self.name, url))
def update(self): if len(self.numbers) == 0: return for num in self.numbers: body = '''<?xml version="1.0"?> <AccessRequest xml:lang='en-US'> <AccessLicenseNumber>%s</AccessLicenseNumber> <UserId>%s</UserId> <Password>%s</Password> </AccessRequest> ''' % (self.config['ups']['xmlkey'], self.config['ups']['username'], self.config['ups']['password']) body += '''<?xml version="1.0"?> <TrackRequest xml:lang='en-US'> <Request> <TransactionReference> <CustomerContext><Number>%s</Number></CustomerContext> <XpciVersion>1.0</XpciVersion> </TransactionReference> <RequestAction>Track</RequestAction> <RequestOption>activity</RequestOption> </Request> <TrackingNumber>%s</TrackingNumber> </TrackRequest>''' % (num, num) body = body.encode('ascii') status, response = request('POST', 'https://wwwcie.ups.com/ups.app/xml/Track', body) #logging.debug(response) tree = ElementTree.fromstring(response) for status in tree.findall('Shipment/Package/Activity'): city = status.findtext('ActivityLocation/Address/City') state = status.findtext('ActivityLocation/Address/StateProvinceCode') dt = '%s:%s' % (status.findtext('Date'), status.findtext('Time')) dt = datetime.strptime(dt, '%Y%m%d:%H%M%S') desc = status.findtext('Status/StatusType/Description') msg = '%s %s: %s' % (dt.strftime('%a %d - %H:%M'), num, desc) if city and state: msg = '%s (%s, %s)' % (msg, city, state) if not msg in self.cache: self.recv(msg) self.cache.append(msg) self.data['cache'] = json.dumps(self.cache)
def send(self, app, msg): status, response = request('POST', app['url'], json.dumps(msg)) logging.info('Sent message to app: %s, %s' % (app['name'], msg['text'])) if status != 200: logging.info('Error response from app: %s (%s, %s)' % (app['name'], status, response))