Rewrite session handling URLs to make a little more sense
This commit is contained in:
@@ -62,22 +62,35 @@ class ServerHandler(AnonymousBaseHandler):
|
||||
serverTime = -1
|
||||
return {"hostname":hostname, "port":s.port, "players": playerList, "time":serverTime, "rules": s.ruleset.split('\n')}
|
||||
|
||||
class PlayerSessionHandler(BaseHandler):
|
||||
allowed_methods = ('POST', 'PUT')
|
||||
model = PlayerSession
|
||||
class NewPlayerSessionHandler(BaseHandler):
|
||||
allowed_methods = ('POST',)
|
||||
|
||||
def create(self, request, playername):
|
||||
ip = request.POST['ip']
|
||||
try:
|
||||
profile = MinecraftProfile.objects.all().filter(mc_username__iexact=playername)[0]
|
||||
except IndexError, e:
|
||||
return {'valid': False, 'error': 'User not found', 'permissions': []}
|
||||
if profile.user.is_active:
|
||||
perms = []
|
||||
if profile.user.is_staff:
|
||||
perms.append('bukkit.command.op.give')
|
||||
ip = request.POST['ip']
|
||||
server = request.server
|
||||
profile = MinecraftProfile.objects.get(mc_username__exact=playername)
|
||||
session = PlayerSession.objects.create(server=server, player=profile, ip=ip)
|
||||
return {'success': True, 'error': '', 'permissions': perms, 'sessionId': session.id}
|
||||
else:
|
||||
return {'success': False, 'error': 'Your account is inactive.', 'permissions': []}
|
||||
|
||||
server = request.server
|
||||
profile = MinecraftProfile.objects.get(mc_username__exact=playername)
|
||||
session = PlayerSession.objects.create(server=server, player=profile, ip=ip)
|
||||
return {'session':session.id}
|
||||
class ClosePlayerSessionHandler(BaseHandler):
|
||||
allowed_methods = ('GET',)
|
||||
|
||||
def update(self, request, playername):
|
||||
session = PlayerSession.objects.get(id__exact=request.POST['session'])
|
||||
session.end = datetime.now()
|
||||
session.save()
|
||||
def read(self, request, playername):
|
||||
sessions = PlayerSession.objects.all().filter(player__mc_username__iexact=playername, end=None)
|
||||
for session in sessions:
|
||||
session.end = datetime.now()
|
||||
session.save()
|
||||
return {'success': True}
|
||||
|
||||
class EconomyHandler(BaseHandler):
|
||||
allowed_methods = ('PUT','GET')
|
||||
|
@@ -90,18 +90,15 @@ class SessionTest(unittest.TestCase):
|
||||
self.server.delete()
|
||||
|
||||
def testSessionStart(self):
|
||||
resp = self.client.post('/api/server/session/%s'%(self.user.minecraftprofile.mc_username), {'hostname':self.server.hostname, 'ip': '127.0.0.1'}, HTTP_AUTHORIZATION="X-Caminus %s"%(self.token))
|
||||
resp = self.client.post('/api/server/session/%s/new'%(self.user.minecraftprofile.mc_username), {'ip': '127.0.0.1'}, HTTP_AUTHORIZATION="X-Caminus %s"%(self.token))
|
||||
self.assertEqual(resp.status_code, 200)
|
||||
session = json.loads(resp.content)
|
||||
sessionObj = PlayerSession.objects.get(id__exact=session['session'])
|
||||
|
||||
def testSessionEnd(self):
|
||||
resp = self.client.post('/api/server/session/%s'%(self.user.minecraftprofile.mc_username), {'hostname':self.server.hostname, 'ip': '127.0.0.1'}, HTTP_AUTHORIZATION="X-Caminus %s"%(self.token))
|
||||
resp = self.client.post('/api/server/session/%s/new'%(self.user.minecraftprofile.mc_username), {'ip': '127.0.0.1'}, HTTP_AUTHORIZATION="X-Caminus %s"%(self.token))
|
||||
session = json.loads(resp.content)
|
||||
resp = self.client.put('/api/server/session/%s'%(self.user.minecraftprofile.mc_username), {'session':session['session']}, HTTP_AUTHORIZATION="X-Caminus %s"%(self.token))
|
||||
resp = self.client.get('/api/server/session/%s/close'%(self.user.minecraftprofile.mc_username), HTTP_AUTHORIZATION="X-Caminus %s"%(self.token))
|
||||
self.assertEqual(resp.status_code, 200)
|
||||
sessionObj = PlayerSession.objects.get(id__exact=session['session'])
|
||||
self.assertNotEqual(sessionObj.end, None)
|
||||
|
||||
class EconomyTest(unittest.TestCase):
|
||||
def setUp(self):
|
||||
|
@@ -45,5 +45,6 @@ urlpatterns = patterns('api',
|
||||
url(r'^server/whoami$', ServerResource(handlers.ServerPingHandler)),
|
||||
url(r'^server/info/(?P<hostname>.*)$', Resource(handlers.ServerHandler)),
|
||||
url(r'^server/economy/(?P<playername>.*)$', ServerResource(handlers.EconomyHandler)),
|
||||
url(r'^server/session/(?P<playername>.*)$', ServerResource(handlers.PlayerSessionHandler)),
|
||||
url(r'^server/session/(?P<playername>.*)/new$', ServerResource(handlers.NewPlayerSessionHandler)),
|
||||
url(r'^server/session/(?P<playername>.*)/close$', ServerResource(handlers.ClosePlayerSessionHandler)),
|
||||
)
|
||||
|
Reference in New Issue
Block a user