@@ -1983,6 +1983,7 @@ class MyPlexJWTLogin:
19831983
19841984 # Method 1: Generate a new Plex JWT using Plex OAuth
19851985 jwtlogin = MyPlexJWTLogin(
1986+ oauth=True,
19861987 scopes=['username', 'email', 'friendly_name']
19871988 )
19881989 jwtlogin.generateKeypair(keyfiles=('private.key', 'public.key'))
@@ -2123,14 +2124,13 @@ def _publicJWK(self):
21232124 def _encodeClientJWT (self ):
21242125 """ Returns the encoded client JWT using the private JWK. """
21252126 payload = {
2127+ 'nonce' : self ._getPlexNonce (),
21262128 'scope' : ',' .join (self ._scopes ),
21272129 'aud' : 'plex.tv' ,
21282130 'iss' : self ._clientIdentifier ,
21292131 'iat' : int (datetime .now ().timestamp ()),
21302132 'exp' : int ((datetime .now () + timedelta (minutes = 5 )).timestamp ()),
21312133 }
2132- if self ._token :
2133- payload ['nonce' ] = self ._getPlexNonce ()
21342134 headers = {
21352135 'kid' : self ._keyID
21362136 }
@@ -2360,8 +2360,8 @@ def _getCode(self):
23602360 if response is None :
23612361 return None
23622362
2363- self ._id = response .attrib . get ('id' )
2364- self ._code = response .attrib . get ('code' )
2363+ self ._id = response .get ('id' )
2364+ self ._code = response .get ('code' )
23652365
23662366 return self ._code
23672367
@@ -2378,7 +2378,7 @@ def _checkLogin(self):
23782378 if response is None :
23792379 return False
23802380
2381- token = response .attrib . get ('authToken' )
2381+ token = response .get ('authToken' )
23822382 if not token :
23832383 return False
23842384
@@ -2412,7 +2412,7 @@ def _headers(self, **kwargs):
24122412 if self ._customHeaders :
24132413 headers .update (self ._customHeaders )
24142414 headers .update (kwargs )
2415- # headers['Accept'] = 'application/json'
2415+ headers ['Accept' ] = 'application/json'
24162416 return headers
24172417
24182418 def _query (self , url , method = None , headers = None , ** kwargs ):
@@ -2424,6 +2424,8 @@ def _query(self, url, method=None, headers=None, **kwargs):
24242424 codename = codes .get (response .status_code )[0 ]
24252425 errtext = response .text .replace ('\n ' , ' ' )
24262426 raise BadRequest (f'({ response .status_code } ) { codename } { response .url } ; { errtext } ' )
2427+ if 'application/json' in response .headers .get ('Content-Type' , '' ):
2428+ return response .json ()
24272429 return utils .parseXMLString (response .text )
24282430
24292431
0 commit comments