diff --git a/pylti/common.py b/pylti/common.py index 62354e9..a7d9de6 100644 --- a/pylti/common.py +++ b/pylti/common.py @@ -306,7 +306,7 @@ def verify_request_common(consumers, url, method, headers, params): def generate_request_xml(message_identifier_id, operation, - lis_result_sourcedid, score): + lis_result_sourcedid, score, launch_url=None): # pylint: disable=too-many-locals """ Generates LTI 1.1 XML for posting result to LTI consumer. @@ -315,6 +315,7 @@ def generate_request_xml(message_identifier_id, operation, :param operation: :param lis_result_sourcedid: :param score: + :param launch_url: :return: XML string """ root = etree.Element(u'imsx_POXEnvelopeRequest', @@ -343,6 +344,10 @@ def generate_request_xml(message_identifier_id, operation, language.text = 'en' text_string = etree.SubElement(result_score, 'textString') text_string.text = score.__str__() + if launch_url: + result_data = etree.SubElement(result, 'resultData') + lti_launch_url = etree.SubElement(result_data, 'ltiLaunchUrl') + lti_launch_url.text = launch_url ret = "\n{}".format( etree.tostring(root, encoding='utf-8').decode('utf-8')) diff --git a/pylti/tests/test_common.py b/pylti/tests/test_common.py index 64fd90d..c687df0 100644 --- a/pylti/tests/test_common.py +++ b/pylti/tests/test_common.py @@ -219,6 +219,20 @@ def test_generate_xml(self): \ lis_result_sourcedid\ """) + xml = generate_request_xml('message_identifier_id', 'operation', + 'lis_result_sourcedid', 'score', + 'https://somelaunchurl/') + self.assertEqual(xml, """ +V1.0\ +message_identifier_id\ +\ +\ +lis_result_sourcedid\ +enscore\ +https://somelaunchurl/\ +\ +""") @staticmethod def generate_oauth_request(url_to_sign=None):