class PubnubSender():

    def __init__(self, host, port, channel, mybuffer):
        self.consumer = Consumer(host, port, self)
        self.pubnub = Pubnub("pub-c-e655613e-f776-4301-9f29-f71edbcd6559",
                        "sub-c-2eafcf66-c636-11e3-8dcd-02ee2ddab7fe",
                        "sec-c-ZjUwZDgzMTItYzE2Mi00ZGYyLTg2NGMtNmE5N2Q3MGI0MTli",
                        False)
        self.buffer = ((mybuffer == "yes") or (mybuffer == 'y'))
        self.channel = channel

    def run(self):
        while(True):
            self.consumer.waitData()
            data = self.consumer.getData()
            if data is not None:
                time = str(calendar.timegm(
                    datetime.datetime.utcnow().utctimetuple()
                ))
                message = {}
                message['channel'] = self.channel
                if not self.buffer:
                    message['message'] = {}
                    message['message'][time] = data
                else:
                    message['message'] = json.loads(data)
                self.pubnub.publish(message)
class PubNubSenderThread(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)
        self.pubnub = Pubnub(
            "pub-c-e655613e-f776-4301-9f29-f71edbcd6559",
            "sub-c-2eafcf66-c636-11e3-8dcd-02ee2ddab7fe",
            "sec-c-ZjUwZDgzMTItYzE2Mi00ZGYyLTg2NGMtNmE5N2Q3MGI0MTli",
            False,
        )
        self.ready = False
        self.message = None
        self.debug = False

    def run(self):
        while True:
            try:
                if self.ready:
                    if self.debug:
                        print "publishing"
                    message = json.loads(self.message)
                    self.pubnub.publish(message)
                    self.ready = False
                    self.message = None
                    if self.debug:
                        print "published"
            except:
                if self.debug:
                    print "Error publishing"
                self.ready = False
                self.message = None