ws: improved connection error handling and logging of error results
This commit is contained in:
parent
55e9c907f9
commit
f7300a212d
|
@ -1,4 +1,5 @@
|
|||
import requests
|
||||
from requests.exceptions import ConnectionError
|
||||
import os.path
|
||||
import xml.etree.ElementTree as etree
|
||||
import collections
|
||||
|
@ -28,9 +29,13 @@ class BlackboardConnector(object):
|
|||
self.shared_key = shared_key
|
||||
self.session = requests.session()
|
||||
url = os.path.join(self.url, 'login/')
|
||||
self.session.post(url,
|
||||
params=dict(user_id=self.login,
|
||||
password=self.password, action='login'))
|
||||
try:
|
||||
self.session.get(url)
|
||||
self.session.post(url,
|
||||
data=dict(user_id=self.login,
|
||||
password=self.password, action='login', login='Connexion'))
|
||||
except ConnectionError:
|
||||
pass
|
||||
|
||||
def _get_course_helper(self, r):
|
||||
r.encoding = 'utf-8'
|
||||
|
@ -58,22 +63,30 @@ class BlackboardConnector(object):
|
|||
return False, 'Erreur BlackBoard'
|
||||
|
||||
def get_course_by_owner(self, user_login):
|
||||
r = self.send_request('GetCoursesByOwner',
|
||||
user_login=user_login.encode('ascii'))
|
||||
try:
|
||||
r = self.send_request('GetCoursesByOwner',
|
||||
user_login=user_login.encode('ascii'))
|
||||
except ConnectionError:
|
||||
return True, []
|
||||
return self._get_course_helper(r)
|
||||
|
||||
def get_course_by_ue(self, entity_code):
|
||||
r = self.send_request('GetCoursesByUE',
|
||||
UE_ID=entity_code.encode('ascii'))
|
||||
try:
|
||||
r = self.send_request('GetCoursesByUE',
|
||||
UE_ID=entity_code.encode('ascii'))
|
||||
except ConnectionError:
|
||||
return True, []
|
||||
return self._get_course_helper(r)
|
||||
|
||||
def send_file(self, uploadfile, courses_id):
|
||||
def send_file(self, uploadfile, courses_id, visible):
|
||||
assert hasattr(uploadfile, 'read')
|
||||
assert hasattr(courses_id, '__iter__')
|
||||
assert len(courses_id) > 0
|
||||
assert all(map(bool, courses_id))
|
||||
visible = bool2str(visible)
|
||||
r = self.send_request('SendFile', course_ID=courses_id,
|
||||
files=dict(uploadfile=uploadfile), method='post')
|
||||
files=dict(uploadfile=uploadfile), method='post',
|
||||
visible=visible)
|
||||
if r.status_code == 200:
|
||||
return True, r.text
|
||||
return False, r.text
|
||||
|
@ -115,7 +128,10 @@ class BlackboardConnector(object):
|
|||
return r
|
||||
|
||||
def get_categories(self):
|
||||
r = self.send_request('GetCategories')
|
||||
try:
|
||||
r = self.send_request('GetCategories')
|
||||
except ConnectionError:
|
||||
return True, GetCategoryResponse('', [])
|
||||
if r.status_code == 200 and r.content.startswith('<'):
|
||||
x = etree.XML(r.content.replace('ISO-8859-1', 'UTF-8'))
|
||||
info_message_elt = x.find('infoMessage')
|
||||
|
@ -133,6 +149,7 @@ class BlackboardConnector(object):
|
|||
return False, r.text
|
||||
else:
|
||||
logging.error('BlackBoard code HTTP %s', r.status_code)
|
||||
logging.error(r.text.replace('\n', '\\n'))
|
||||
return False, 'Erreur BlackBoard {0}'.format(r.status_code)
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
|
Reference in New Issue