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