Skip to content

Commit dd91ae4

Browse files
authored
Use Unauthorized exception (#447)
* Use Unauthorized exception in server, myplex, client
1 parent 807aaea commit dd91ae4

File tree

4 files changed

+20
-10
lines changed

4 files changed

+20
-10
lines changed

plexapi/client.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from plexapi import log, logfilter, utils
88
from plexapi.base import PlexObject
99
from plexapi.compat import ElementTree
10-
from plexapi.exceptions import BadRequest, Unsupported
10+
from plexapi.exceptions import BadRequest, Unauthorized, Unsupported
1111
from plexapi.playqueue import PlayQueue
1212

1313

@@ -162,8 +162,11 @@ def query(self, path, method=None, headers=None, timeout=None, **kwargs):
162162
if response.status_code not in (200, 201):
163163
codename = codes.get(response.status_code)[0]
164164
errtext = response.text.replace('\n', ' ')
165-
log.warning('BadRequest (%s) %s %s; %s' % (response.status_code, codename, response.url, errtext))
166-
raise BadRequest('(%s) %s; %s %s' % (response.status_code, codename, response.url, errtext))
165+
message = '(%s) %s; %s %s' % (response.status_code, codename, response.url, errtext)
166+
if response.status_code == 401:
167+
raise Unauthorized(message)
168+
else:
169+
raise BadRequest(message)
167170
data = response.text.encode('utf8')
168171
return ElementTree.fromstring(data) if data.strip() else None
169172

plexapi/exceptions.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,6 @@ class Unsupported(PlexApiException):
2626
pass
2727

2828

29-
class Unauthorized(PlexApiException):
30-
""" Invalid username or password. """
29+
class Unauthorized(BadRequest):
30+
""" Invalid username/password or token. """
3131
pass

plexapi/myplex.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from plexapi import BASE_HEADERS, CONFIG, TIMEOUT, X_PLEX_IDENTIFIER, X_PLEX_ENABLE_FAST_CONNECT
77
from plexapi import log, logfilter, utils
88
from plexapi.base import PlexObject
9-
from plexapi.exceptions import BadRequest, NotFound
9+
from plexapi.exceptions import BadRequest, NotFound, Unauthorized
1010
from plexapi.client import PlexClient
1111
from plexapi.compat import ElementTree
1212
from plexapi.library import LibrarySection
@@ -175,7 +175,11 @@ def query(self, url, method=None, headers=None, timeout=None, **kwargs):
175175
if response.status_code not in (200, 201, 204): # pragma: no cover
176176
codename = codes.get(response.status_code)[0]
177177
errtext = response.text.replace('\n', ' ')
178-
raise BadRequest('(%s) %s %s; %s' % (response.status_code, codename, response.url, errtext))
178+
message = '(%s) %s; %s %s' % (response.status_code, codename, response.url, errtext)
179+
if response.status_code == 401:
180+
raise Unauthorized(message)
181+
else:
182+
raise BadRequest(message)
179183
data = response.text.encode('utf8')
180184
return ElementTree.fromstring(data) if data.strip() else None
181185

plexapi/server.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from plexapi.base import PlexObject
88
from plexapi.client import PlexClient
99
from plexapi.compat import ElementTree, urlencode
10-
from plexapi.exceptions import BadRequest, NotFound
10+
from plexapi.exceptions import BadRequest, NotFound, Unauthorized
1111
from plexapi.library import Library, Hub
1212
from plexapi.settings import Settings
1313
from plexapi.playlist import Playlist
@@ -398,8 +398,11 @@ def query(self, key, method=None, headers=None, timeout=None, **kwargs):
398398
if response.status_code not in (200, 201):
399399
codename = codes.get(response.status_code)[0]
400400
errtext = response.text.replace('\n', ' ')
401-
log.warning('BadRequest (%s) %s %s; %s' % (response.status_code, codename, response.url, errtext))
402-
raise BadRequest('(%s) %s; %s %s' % (response.status_code, codename, response.url, errtext))
401+
message = '(%s) %s; %s %s' % (response.status_code, codename, response.url, errtext)
402+
if response.status_code == 401:
403+
raise Unauthorized(message)
404+
else:
405+
raise BadRequest(message)
403406
data = response.text.encode('utf8')
404407
return ElementTree.fromstring(data) if data.strip() else None
405408

0 commit comments

Comments
 (0)