fix(mslLogin): Restart for credentials in MSL not longer necessary
[plugin.video.netflix.git] / resources / lib / MSLHttpRequestHandler.py
1 import BaseHTTPServer
2 import base64
3 from urlparse import urlparse, parse_qs
4 from MSL import MSL
5 from KodiHelper import KodiHelper
6
7 kodi_helper = KodiHelper(
8     plugin_handle=None,
9     base_url=None
10 )
11
12 msl = MSL(kodi_helper)
13
14 class MSLHttpRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
15
16     def do_HEAD(self):
17         self.send_response(200)
18
19     def do_POST(self):
20         length = int(self.headers['content-length'])
21         post = self.rfile.read(length)
22         print post
23         data = post.split('!')
24         if len(data) is 2:
25             challenge = data[0]
26             sid = base64.standard_b64decode(data[1])
27             b64license = msl.get_license(challenge, sid)
28             if b64license is not '':
29                 self.send_response(200)
30                 self.end_headers()
31                 self.wfile.write(base64.standard_b64decode(b64license))
32                 self.finish()
33             else:
34                 kodi_helper.log(msg='Error getting License')
35                 self.send_response(400)
36         else:
37             kodi_helper.log(msg='Error in License Request')
38             self.send_response(400)
39
40     def do_GET(self):
41         url = urlparse(self.path)
42         params = parse_qs(url.query)
43         if 'id' not in params:
44             self.send_response(400, 'No id')
45         else:
46             # Get the manifest with the given id
47             data = msl.load_manifest(int(params['id'][0]))
48             self.send_response(200)
49             self.send_header('Content-type', 'application/xml')
50             self.end_headers()
51             self.wfile.write(data)
52
53     def log_message(self, format, *args):
54         """
55         Disable the BaseHTTPServer Log
56         :param format:
57         :param args:
58         :return: None
59         """
60         return