Exemplo n.º 1
0
    def generate_launch_data(self):
        # Validate params
        if not self.has_required_params():
            raise InvalidLTIConfigError('ToolConsumer does not have all required attributes: consumer_key = %s, consumer_secret = %s, resource_link_id = %s, launch_url = %s' %(self.consumer_key, self.consumer_secret, self.resource_link_id, self.launch_url))

        params = self.to_params()

        if params.get('lit_version', None) is not None:
            params['lti_version'] = 'LTI-1.0'

        if params.get('lti_message_type', None) is not None:
            params['lti_message_type'] = 'basic-lti-launch-request'

        # Get new OAuth consumer
        consumer = oauth2.Consumer(key = self.consumer_key,\
                secret = self.consumer_secret)

        params.update({
            'oauth_nonce': str(generate_identifier()),
            'oauth_timestamp': str(int(time.time())),
            'oauth_scheme': 'body',
            'oauth_consumer_key': consumer.key
        })

        # russomi: Removing since it is causing duplicate id values
        # to be passed and fails to match the moodle signature...
        # uri = urlparse.urlparse(self.launch_url)
        # if uri.query != '':
        #     for param in uri.query.split('&'):
        #         key, val = param.split('=')
        #         if params.get(key) == None:
        #             params[key] = str(val)

        request = oauth2.Request(method = 'POST',
                url = self.launch_url,
                parameters = params)

        signature_method = oauth2.SignatureMethod_HMAC_SHA1()
        request.sign_request(signature_method, consumer, None)

        # Request was made by an HTML form in the user's browser.
        # Return the dict of post parameters ready for embedding
        # in an html view.
        return_params = {}
        for key in request:
            if request[key] == None:
                return_params[key] = None
            elif isinstance(request[key], list):
                return_params[key] = request.get_parameter(key)
            else:
                return_params[key] = unquote(request.get_parameter(key))
        return return_params
Exemplo n.º 2
0
    def generate_launch_data(self):
        # Validate params
        if not self.has_required_params():
            raise InvalidLTIConfigError(
                'ToolConsumer does not have all required attributes: consumer_key = %s, consumer_secret = %s, resource_link_id = %s, launch_url = %s'
                % (self.consumer_key, self.consumer_secret,
                   self.resource_link_id, self.launch_url))

        params = self.to_params()

        if not params.get('lit_version', None):
            params['lti_version'] = 'LTI-1.0'

        params['lti_message_type'] = 'basic-lti-launch-request'

        # Get new OAuth consumer
        consumer = oauth2.Consumer(key = self.consumer_key,\
                secret = self.consumer_secret)

        params.update({
            'oauth_nonce': str(generate_identifier()),
            'oauth_timestamp': str(int(time.time())),
            'oauth_scheme': 'body',
            'oauth_consumer_key': consumer.key
        })

        uri = urlparse.urlparse(self.launch_url)
        if uri.query != '':
            for param in uri.query.split('&'):
                key, val = param.split('=')
                if params.get(key) == None:
                    params[key] = str(val)

        request = oauth2.Request(method='POST',
                                 url=self.launch_url,
                                 parameters=params)

        signature_method = oauth2.SignatureMethod_HMAC_SHA1()
        request.sign_request(signature_method, consumer, None)

        # Request was made by an HTML form in the user's browser.
        # Return the dict of post parameters ready for embedding
        # in an html view.
        return_params = {}
        for key in request:
            if request[key] == None:
                return_params[key] = None
            elif isinstance(request[key], list):
                return_params[key] = request.get_parameter(key)
            else:
                return_params[key] = unquote(request.get_parameter(key))
        return return_params
Exemplo n.º 3
0
 def _params_update(self):
     return {
         'oauth_nonce': str(generate_identifier()),
         'oauth_timestamp': str(int(time.time())),
         'oauth_scheme': 'body'
     }
Exemplo n.º 4
0
 def _params_update(self):
     return {
         'oauth_nonce': str(generate_identifier()),
         'oauth_timestamp': str(int(time.time())),
         'oauth_scheme': 'body'
     }