feat(msl): Move functionality from common.py to KodiHelper.py & remove common.py
[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 plugin_handle = int(sys.argv[1])
9 base_url = sys.argv[0]
10 kodi_helper = KodiHelper(
11     plugin_handle=plugin_handle,
12     base_url=base_url
13 )
14
15 account = kodi_helper.addon.get_credentials()
16 email = account['email']
17 password = account['password']
18 msl = MSL(email, password)
19
20 class MSLHttpRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
21
22     def do_HEAD(self):
23         self.send_response(200)
24
25     def do_POST(self):
26         length = int(self.headers['content-length'])
27         post = self.rfile.read(length)
28         print post
29         data = post.split('!')
30         if len(data) is 2:
31             challenge = data[0]
32             sid = base64.standard_b64decode(data[1])
33             b64license = msl.get_license(challenge, sid)
34             if b64license is not '':
35                 self.send_response(200)
36                 self.end_headers()
37                 self.wfile.write(base64.standard_b64decode(b64license))
38                 self.finish()
39             else:
40                 self.send_response(400)
41         else:
42             self.send_response(400)
43
44     def do_GET(self):
45         url = urlparse(self.path)
46         params = parse_qs(url.query)
47         if 'id' not in params:
48             self.send_response(400, 'No id')
49         else:
50             # Get the manifest with the given id
51             data = msl.load_manifest(int(params['id'][0]))
52             self.send_response(200)
53             self.send_header('Content-type', 'application/xml')
54             self.end_headers()
55             self.wfile.write(data)