summaryrefslogtreecommitdiff
path: root/plugin.video.cmore/resources/lib/WidevineHTTPRequestHandler.py
blob: ade620d8be0d0379411e8b41b809a9a3cafb4460 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import BaseHTTPServer
import urlparse
import urllib

from Widevine import Widevine

wv = Widevine()


class WidevineHTTPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
    def do_HEAD(self):
        self.send_response(200)

    def do_POST(self):
        length = int(self.headers['content-length'])
        wv_challenge = self.rfile.read(length)
        query = dict(urlparse.parse_qsl(urlparse.urlsplit(self.path).query))
        mpd_url = query['mpd_url']
        token = query['license_url'].split('token=')[1]

        try:
            wv_license = wv.get_license(mpd_url, wv_challenge, token)
            self.send_response(200)
            self.end_headers()
            self.wfile.write(wv_license)
            self.finish()
        except Exception as ex:
            self.send_response(400)
            self.wfile.write(ex.value)

    def log_message(self, format, *args):
        """Disable the BaseHTTPServer log."""
        return