chore(performance): Does preflight request with lolomoid if given in cookie
[plugin.video.netflix.git] / resources / lib / MSLHttpRequestHandler.py
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3 # Module: MSLHttpRequestHandler
4 # Created on: 26.01.2017
5
6 import BaseHTTPServer
7 import base64
8 from urlparse import urlparse, parse_qs
9 from MSL import MSL
10 from KodiHelper import KodiHelper
11
12 kodi_helper = KodiHelper()
13
14 msl = MSL(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)
54
55     def log_message(self, format, *args):
56         """
57         Disable the BaseHTTPServer Log
58         :param format:
59         :param args:
60         :return: None
61         """
62         return