eba87e9f2ea769c4943ac6016bda088149ab5041
[plugin.video.netflix.git] / resources / lib / MSLHttpRequestHandler.py
1 import BaseHTTPServer
2 import base64
3 from urlparse import urlparse, parse_qs
4
5 from MSL import MSL
6 from KodiHelper import KodiHelper
7
8 kodi_helper = KodiHelper(
9     plugin_handle=None,
10     base_url=None
11 )
12 account = kodi_helper.get_credentials()
13 msl = MSL(account['email'], account['password'], kodi_helper)
14
15 class MSLHttpRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
16
17     def do_HEAD(self):
18         self.send_response(200)
19
20     def do_POST(self):
21         length = int(self.headers['content-length'])
22         post = self.rfile.read(length)
23         print post
24         data = post.split('!')
25         if len(data) is 2:
26             challenge = data[0]
27             sid = base64.standard_b64decode(data[1])
28             b64license = msl.get_license(challenge, sid)
29             if b64license is not '':
30                 self.send_response(200)
31                 self.end_headers()
32                 self.wfile.write(base64.standard_b64decode(b64license))
33                 self.finish()
34             else:
35                 self.send_response(400)
36         else:
37             self.send_response(400)
38
39     def do_GET(self):
40         url = urlparse(self.path)
41         params = parse_qs(url.query)
42         if 'id' not in params:
43             self.send_response(400, 'No id')
44         else:
45             # Get the manifest with the given id
46             data = msl.load_manifest(int(params['id'][0]))
47             self.send_response(200)
48             self.send_header('Content-type', 'application/xml')
49             self.end_headers()
50             self.wfile.write(data)