Esempio n. 1
0
 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))
Esempio n. 2
0
 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))
Esempio n. 3
0
    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)
Esempio n. 4
0
 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))