Refactor verification for ZanataRestService
Rather than pass verify to each function that requires it, refactor it down the stack into __init__. Now that we have moved to using translate.o.o which has a trusted certificate, switch the default to True. Add a command-line argument --no-verify to create-zanata-xml to ease testing against translate-dev. Change-Id: I0f2314a8e82c3b7f1c96f28408c36ea1dd786e2f
This commit is contained in:
parent
01f9c7f27e
commit
f1468431bf
@ -62,7 +62,7 @@ class IniConfig:
|
|||||||
|
|
||||||
|
|
||||||
class ZanataRestService:
|
class ZanataRestService:
|
||||||
def __init__(self, zconfig, content_type='application/xml'):
|
def __init__(self, zconfig, content_type='application/xml', verify=True):
|
||||||
self.url = zconfig.url
|
self.url = zconfig.url
|
||||||
if "charset" not in content_type:
|
if "charset" not in content_type:
|
||||||
content_type = "%s;charset=utf8" % content_type
|
content_type = "%s;charset=utf8" % content_type
|
||||||
@ -70,14 +70,16 @@ class ZanataRestService:
|
|||||||
'Content-Type': content_type,
|
'Content-Type': content_type,
|
||||||
'X-Auth-User': zconfig.username,
|
'X-Auth-User': zconfig.username,
|
||||||
'X-Auth-Token': zconfig.key}
|
'X-Auth-Token': zconfig.key}
|
||||||
|
self.verify = verify
|
||||||
|
|
||||||
def _construct_url(self, url_fragment):
|
def _construct_url(self, url_fragment):
|
||||||
return urljoin(self.url, url_fragment)
|
return urljoin(self.url, url_fragment)
|
||||||
|
|
||||||
def query(self, url_fragment, verify=False, raise_errors=True):
|
def query(self, url_fragment, raise_errors=True):
|
||||||
request_url = self._construct_url(url_fragment)
|
request_url = self._construct_url(url_fragment)
|
||||||
try:
|
try:
|
||||||
r = requests.get(request_url, verify=verify, headers=self.headers)
|
r = requests.get(request_url, verify=self.verify,
|
||||||
|
headers=self.headers)
|
||||||
except requests.exceptions.ConnectionError:
|
except requests.exceptions.ConnectionError:
|
||||||
raise ValueError('Connection error')
|
raise ValueError('Connection error')
|
||||||
if raise_errors and r.status_code != 200:
|
if raise_errors and r.status_code != 200:
|
||||||
@ -87,10 +89,10 @@ class ZanataRestService:
|
|||||||
raise ValueError('Did not recieve any data from %s' % request_url)
|
raise ValueError('Did not recieve any data from %s' % request_url)
|
||||||
return r
|
return r
|
||||||
|
|
||||||
def push(self, url_fragment, data, verify=False):
|
def push(self, url_fragment, data):
|
||||||
request_url = self._construct_url(url_fragment)
|
request_url = self._construct_url(url_fragment)
|
||||||
try:
|
try:
|
||||||
return requests.put(request_url, verify=verify,
|
return requests.put(request_url, verify=self.verify,
|
||||||
headers=self.headers, data=json.dumps(data))
|
headers=self.headers, data=json.dumps(data))
|
||||||
except requests.exceptions.ConnectionError:
|
except requests.exceptions.ConnectionError:
|
||||||
raise ValueError('Connection error')
|
raise ValueError('Connection error')
|
||||||
@ -108,8 +110,8 @@ class ProjectConfig:
|
|||||||
xmlfile (str): path to zanata.xml to read or write
|
xmlfile (str): path to zanata.xml to read or write
|
||||||
rules (list): list of two-ples with pattern and rules
|
rules (list): list of two-ples with pattern and rules
|
||||||
"""
|
"""
|
||||||
def __init__(self, zconfig, xmlfile, rules, **kwargs):
|
def __init__(self, zconfig, xmlfile, rules, verify, **kwargs):
|
||||||
self.rest_service = ZanataRestService(zconfig)
|
self.rest_service = ZanataRestService(zconfig, verify=verify)
|
||||||
self.xmlfile = xmlfile
|
self.xmlfile = xmlfile
|
||||||
self.rules = self._parse_rules(rules)
|
self.rules = self._parse_rules(rules)
|
||||||
if os.path.isfile(os.path.abspath(xmlfile)):
|
if os.path.isfile(os.path.abspath(xmlfile)):
|
||||||
@ -181,7 +183,7 @@ class ProjectConfig:
|
|||||||
"""
|
"""
|
||||||
r = self.rest_service.query(
|
r = self.rest_service.query(
|
||||||
'/rest/projects/p/%s/iterations/i/%s/config'
|
'/rest/projects/p/%s/iterations/i/%s/config'
|
||||||
% (self.project, self.version), verify=verify)
|
% (self.project, self.version))
|
||||||
project_config = r.content
|
project_config = r.content
|
||||||
p = etree.XMLParser(remove_blank_text=True)
|
p = etree.XMLParser(remove_blank_text=True)
|
||||||
try:
|
try:
|
||||||
|
@ -33,6 +33,8 @@ def get_args():
|
|||||||
'match .pot files to translations. Can be specified '
|
'match .pot files to translations. Can be specified '
|
||||||
'multiple times, and if no rules are specified a '
|
'multiple times, and if no rules are specified a '
|
||||||
'default will be used.')
|
'default will be used.')
|
||||||
|
parser.add_argument('--no-verify', action='store_false', dest='verify',
|
||||||
|
help='Do not perform HTTPS certificate verification')
|
||||||
parser.add_argument('-f', '--file', required=True)
|
parser.add_argument('-f', '--file', required=True)
|
||||||
return parser.parse_args()
|
return parser.parse_args()
|
||||||
|
|
||||||
@ -44,7 +46,7 @@ def main():
|
|||||||
rules = args.rule or [default_rule]
|
rules = args.rule or [default_rule]
|
||||||
try:
|
try:
|
||||||
zc = IniConfig(os.path.expanduser('~/.config/zanata.ini'))
|
zc = IniConfig(os.path.expanduser('~/.config/zanata.ini'))
|
||||||
ProjectConfig(zc, args.file, rules, project=args.project,
|
ProjectConfig(zc, args.file, rules, args.verify, project=args.project,
|
||||||
version=args.version,
|
version=args.version,
|
||||||
srcdir=args.srcdir, txdir=args.txdir,
|
srcdir=args.srcdir, txdir=args.txdir,
|
||||||
excludes=args.excludes)
|
excludes=args.excludes)
|
||||||
|
Loading…
Reference in New Issue
Block a user