Skip to content

Commit edd415a

Browse files
committed
remove oauthlib dependency, Jarvis limitation
1 parent 2a4e40d commit edd415a

2 files changed

Lines changed: 20 additions & 6 deletions

File tree

addon.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
<import addon="xbmc.python" version="2.1.0"/>
55
<import addon="script.module.six" version="1.9.0"/>
66
<import addon="script.module.requests" version="2.9.1"/>
7-
<import addon="script.module.oauthlib"/>
87
</requires>
98
<extension point="xbmc.python.module" library="resources/lib"/>
109
<extension point="xbmc.addon.metadata">

resources/lib/twitch/oauth.py

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,31 @@
22

33
from twitch import CLIENT_ID
44
from twitch import scopes
5-
from oauthlib.oauth2 import MobileApplicationClient
5+
from six.moves.urllib_parse import urlsplit, urlencode
66

77

88
class MobileClient:
99
_auth_base_url = 'https://api.twitch.tv/kraken/oauth2/authorize'
1010

1111
def __init__(self, client_id=''):
1212
self.client_id = client_id if client_id else CLIENT_ID
13-
self.client = MobileApplicationClient(client_id=client_id)
14-
self.parse_request_uri_response = self.client.parse_request_uri_response
1513

16-
def prepare_request_uri(self, redirect_uri='http://localhost:3000/', scope=list()):
17-
return self.client.prepare_request_uri(self._auth_base_url, redirect_uri=redirect_uri, scope=scope)
14+
def prepare_request_uri(self, redirect_uri='http://localhost:3000/', scope=list(), force_verify=False, state=''):
15+
params = {'response_type': 'token',
16+
'client_id': self.client_id,
17+
'redirect_uri': redirect_uri,
18+
'scope': ' '.join(scope),
19+
'force_verify': str(force_verify).lower(),
20+
'state': state}
21+
params = urlencode(params)
22+
url = '{base_uri}?{params}'.format(base_uri=self._auth_base_url, params=params)
23+
return url
24+
25+
@staticmethod
26+
def parse_implicit_response(url):
27+
pairs = urlsplit(url).fragment.split('&')
28+
fragment = dict()
29+
for pair in pairs:
30+
key, value = pair.split('=')
31+
fragment[key] = value
32+
return {'access_token': fragment.get('access_token'), 'scope': fragment.get('scope', '').split('+'), 'state': fragment.get('state')}

0 commit comments

Comments
 (0)