Add terminate session to API

This commit is contained in:
JonnyWong16 2017-02-25 22:53:32 -08:00
parent 992f0baf93
commit cea851d38e
2 changed files with 58 additions and 0 deletions

View file

@ -155,6 +155,22 @@ class PmsConnect(object):
return request
def get_sessions_terminate(self, session_id='', reason='', output_format=''):
"""
Return current sessions.
Optional parameters: output_format { dict, json }
Output: array
"""
uri = '/status/sessions/terminate?sessionId=%s&reason=%s' % (session_id, reason)
request = self.request_handler.make_request(uri=uri,
proto=self.protocol,
request_type='GET',
output_format=output_format)
return request
def get_metadata(self, rating_key='', output_format=''):
"""
Return metadata for request item.
@ -1360,6 +1376,21 @@ class PmsConnect(object):
return session_output
def terminate_session(self, session_id='', message=''):
"""
Terminates a streaming session.
Output: bool
"""
message = message or 'The server owner has ended the stream.'
if session_id:
result = self.get_sessions_terminate(session_id=session_id, reason=urllib.quote_plus(message))
return result
else:
return False
def get_item_children(self, rating_key=''):
"""
Return processed and validated children list.

View file

@ -280,6 +280,33 @@ class WebInterface(object):
logger.warn(u"Unable to retrieve data for get_current_activity_header.")
return serve_template(templatename="current_activity_header.html", data=None)
@cherrypy.expose
@cherrypy.tools.json_out()
@requireAuth(member_of("admin"))
@addtoapi()
def terminate_session(self, session_id=None, message=None, **kwargs):
""" Add a new notification agent.
```
Required parameters:
session_id (str): The id of the session to terminate
message (str): A custom message to send to the client
Optional parameters:
None
Returns:
None
```
"""
pms_connect = pmsconnect.PmsConnect()
result = pms_connect.terminate_session(session_id=session_id, message=message)
if result:
return {'result': 'success', 'message': 'Session terminated.'}
else:
return {'result': 'error', 'message': 'Failed to terminate session.'}
@cherrypy.expose
@requireAuth()
def home_stats(self, **kwargs):