import stomp, gzip, io, datetime, os, time

class MyListener(object):
        #
        # def __init__ (self, conn):
        #       self._conn = conn

        def on_error(self, headers, message):
                print(('received an error %s' % message))

        def on_message(self, headers, message):
                timenow = datetime.datetime.now()
                filetime = f"{timenow.day}.{timenow.month}.{timenow.year}_{timenow.hour:02}.{timenow.minute:02}.{timenow.second:02}.{timenow.microsecond:06}_UTC"
                
                recvxml = gzip.GzipFile(fileobj = io.BytesIO(message), mode = "rb")
                
                with open(f'dump/{filetime}.xml', "wb+") as outxml:
                    outxml.write(recvxml.read())


os.makedirs("dump", exist_ok=True)

conn = stomp.Connection([('datafeeds.nationalrail.co.uk', 61613)], auto_decode=False)
conn.set_listener('', MyListener())
conn.start()
conn.connect(username = 'd3user', passcode = 'd3password', wait=False)
conn.subscribe(destination='/queue/D340787afa-7122-4e1b-a171-6afe2e5a2666', id=1, ack='auto')


mydata = input('Prompt :')
time.sleep(0.2)
conn.unsubscribe(id=1)
time.sleep(0.5)
conn.disconnect