def on_post(self, req, resp):
"""Check with plex web api the user id and server to have access"""
if 'X-TOKEN' not in req.headers:
raise falcon.HTTPForbidden('Permission Denied', 'Missing header X-token')
token = req.headers['X-TOKEN']
result = plex_get_request('https://plex.tv/users/account.json', token)
if result.status_code == 401 or result.status_code == 422:
raise falcon.HTTPForbidden('Permission Denied', 'Provided token is not valid')
account_id = result.json()['user']['id']
result = plex_get_request('https://plex.tv/pms/servers', token)
media_container_element = ElementTree.fromstring(result.content)
servers = set()
for server_element in media_container_element:
servers.add(server_element.attrib['machineIdentifier'])
# The following action is idempotent, so we can run it without worrying
for server_id in servers:
server.Actions.add_account(server_id, account_id)
account.Actions.add_server(account_id, server_id)
resp.status = falcon.HTTP_200
评论列表
文章目录