Skip to content

Commit 53c8aff

Browse files
committed
Move _BugzillaTokenCache to _authfiles.py
Signed-off-by: Cole Robinson <[email protected]>
1 parent d2f983d commit 53c8aff

2 files changed

Lines changed: 46 additions & 45 deletions

File tree

bugzilla/_authfiles.py

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@
88
# pylint: disable=import-error,no-name-in-module,ungrouped-imports
99
if sys.version_info[0] >= 3:
1010
from configparser import ConfigParser
11+
from urllib.parse import urlparse # pylint: disable=no-name-in-module
1112
else:
13+
from urlparse import urlparse
1214
from ConfigParser import SafeConfigParser as ConfigParser
1315
# pylint: enable=import-error,no-name-in-module,ungrouped-imports
1416

@@ -38,3 +40,46 @@ def open_bugzillarc(configpaths=-1):
3840

3941
log.info("Found bugzillarc files: %s", read_files)
4042
return cfg
43+
44+
45+
class _BugzillaTokenCache(object):
46+
"""
47+
Cache for tokens, including, with apologies for the duplicative
48+
terminology, both Bugzilla Tokens and API Keys.
49+
"""
50+
51+
def __init__(self, uri, tokenfilename):
52+
self.tokenfilename = tokenfilename
53+
self.tokenfile = ConfigParser()
54+
self.domain = urlparse(uri)[1]
55+
56+
if self.tokenfilename:
57+
self.tokenfile.read(self.tokenfilename)
58+
59+
if self.domain not in self.tokenfile.sections():
60+
self.tokenfile.add_section(self.domain)
61+
62+
@property
63+
def value(self):
64+
if self.tokenfile.has_option(self.domain, 'token'):
65+
return self.tokenfile.get(self.domain, 'token')
66+
else:
67+
return None
68+
69+
@value.setter
70+
def value(self, value):
71+
if self.value == value:
72+
return
73+
74+
if value is None:
75+
self.tokenfile.remove_option(self.domain, 'token')
76+
else:
77+
self.tokenfile.set(self.domain, 'token', value)
78+
79+
if self.tokenfilename:
80+
with open(self.tokenfilename, 'w') as tokenfile:
81+
log.debug("Saving to tokenfile")
82+
self.tokenfile.write(tokenfile)
83+
84+
def __repr__(self):
85+
return '<Bugzilla Token Cache :: %s>' % self.value

bugzilla/transport.py

Lines changed: 1 addition & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -7,66 +7,22 @@
77

88
# pylint: disable=import-error
99
if sys.version_info[0] >= 3:
10-
from configparser import ConfigParser
1110
from urllib.parse import urlparse # pylint: disable=no-name-in-module
1211
from xmlrpc.client import Fault, ProtocolError, ServerProxy, Transport
1312
else:
14-
from ConfigParser import SafeConfigParser as ConfigParser
1513
from urlparse import urlparse
1614
from xmlrpclib import Fault, ProtocolError, ServerProxy, Transport
1715
# pylint: enable=import-error
1816

1917
import requests
2018

19+
from ._authfiles import _BugzillaTokenCache
2120
from .exceptions import BugzillaError
2221

2322

2423
log = getLogger(__name__)
2524

2625

27-
class _BugzillaTokenCache(object):
28-
"""
29-
Cache for tokens, including, with apologies for the duplicative
30-
terminology, both Bugzilla Tokens and API Keys.
31-
"""
32-
33-
def __init__(self, uri, tokenfilename):
34-
self.tokenfilename = tokenfilename
35-
self.tokenfile = ConfigParser()
36-
self.domain = urlparse(uri)[1]
37-
38-
if self.tokenfilename:
39-
self.tokenfile.read(self.tokenfilename)
40-
41-
if self.domain not in self.tokenfile.sections():
42-
self.tokenfile.add_section(self.domain)
43-
44-
@property
45-
def value(self):
46-
if self.tokenfile.has_option(self.domain, 'token'):
47-
return self.tokenfile.get(self.domain, 'token')
48-
else:
49-
return None
50-
51-
@value.setter
52-
def value(self, value):
53-
if self.value == value:
54-
return
55-
56-
if value is None:
57-
self.tokenfile.remove_option(self.domain, 'token')
58-
else:
59-
self.tokenfile.set(self.domain, 'token', value)
60-
61-
if self.tokenfilename:
62-
with open(self.tokenfilename, 'w') as tokenfile:
63-
log.debug("Saving to tokenfile")
64-
self.tokenfile.write(tokenfile)
65-
66-
def __repr__(self):
67-
return '<Bugzilla Token Cache :: %s>' % self.value
68-
69-
7026
class _BugzillaSession(object):
7127
"""
7228
Class to handle the backend agnostic 'requests' setup

0 commit comments

Comments
 (0)