Add pubsub server API, without client API or UI yet.

This commit is contained in:
Ian Gulliver
2014-05-06 22:46:07 -07:00
parent bb5c0752b1
commit e6885042f5
4 changed files with 135 additions and 32 deletions

54
api.py
View File

@@ -26,6 +26,37 @@ from cosmopolite.lib import utils
import config
def CreateChannel(google_user, client, args):
token = channel.create_channel(
client_id=str(client.key()),
duration_minutes=config.CHANNEL_DURATION_SECONDS / 60)
messages = [x.ToMessage()
for x in client.parent().GetStateEntries()]
if google_user:
messages.append({
'message_type': 'login',
'google_user': google_user.email(),
})
else:
messages.append({
'message_type': 'logout',
})
return {
'token': token,
'messages': messages,
}
def SendMessage(google_user, client, args):
subject = args['subject']
message = args['message']
models.Subject.FindOrCreate(subject).SendMessage(message)
return {}
@db.transactional()
def SetValue(google_user, client, args):
entry_key = args['key']
@@ -57,25 +88,12 @@ def SetValue(google_user, client, args):
return {}
def CreateChannel(google_user, client, args):
token = channel.create_channel(
client_id=str(client.key()),
duration_minutes=config.CHANNEL_DURATION_SECONDS / 60)
messages = [x.ToMessage()
for x in client.parent().GetStateEntries()]
if google_user:
messages.append({
'message_type': 'login',
'google_user': google_user.email(),
})
else:
messages.append({
'message_type': 'logout',
})
def Subscribe(google_user, client, args):
subject = models.Subject.FindOrCreate(args['subject'])
messages = args.get('messages', 0)
return {
'token': token,
'messages': messages,
'messages': models.Subscription.FindOrCreate(subject, client, messages),
}
@@ -83,7 +101,9 @@ class APIWrapper(webapp2.RequestHandler):
_COMMANDS = {
'createChannel': CreateChannel,
'sendMessage': SendMessage,
'setValue': SetValue,
'subscribe': Subscribe,
}
@utils.chaos_monkey