Untested code for polling instances.

This commit is contained in:
Ian Gulliver
2015-06-12 19:57:55 -07:00
parent d94b3d08ae
commit 33579856c8
2 changed files with 68 additions and 9 deletions

35
api.py
View File

@@ -28,7 +28,11 @@ import config
def CreateChannel(google_user, client, client_address, instance_id, args):
models.Instance.FindOrCreate(instance_id)
instance = models.Instance.FindOrCreate(instance_id)
if instance.polling:
instance.polling = False
instance.save()
token = channel.create_channel(
client_id=instance_id,
@@ -50,6 +54,32 @@ def CreateChannel(google_user, client, client_address, instance_id, args):
}
def Poll(google_user, client, client_address, instance_id, args):
instance = models.Instance.FindOrCreate(instance_id)
if not instance.polling:
instance.polling = True
instance.save()
events = []
if google_user:
events.append({
'event_type': 'login',
'google_user': google_user.email(),
})
else:
events.append({
'event_type': 'logout',
})
for subscription in instance.GetSubscriptions():
events.extend(subscription.GetMessages())
return {
'events': events,
}
def Pin(google_user, client, client_address, instance_id, args):
instance = models.Instance.FromID(instance_id)
if not instance or not instance.active:
@@ -143,7 +173,7 @@ def Subscribe(google_user, client, client_address, instance_id, args):
return {
'result': 'ok',
'events': models.Subscription.FindOrCreate(
subject, client, instance, args['subject'], messages, last_id),
subject, client, instance, args['subject'], messages, last_id, instance.polling),
}
@@ -181,6 +211,7 @@ class APIWrapper(webapp2.RequestHandler):
_COMMANDS = {
'createChannel': CreateChannel,
'pin': Pin,
'poll': Poll,
'sendMessage': SendMessage,
'subscribe': Subscribe,
'unpin': Unpin,