code: def _post_patched_request(consumers, lti_key, body,
                            url, method, content_type):
      
      # pylint: disable=too-many-locals, too-many-arguments
      oauth_server = LTIOAuthServer(consumers)
      oauth_server.add_signature_method(SignatureMethod_HMAC_SHA1_Unicode())
      lti_consumer = oauth_server.lookup_consumer(lti_key)
      lti_cert = oauth_server.lookup_cert(lti_key)
      secret = lti_consumer.secret
  
      consumer = oauth2.Consumer(key=lti_key, secret=secret)
      client = oauth2.Client(consumer)
  
      if lti_cert:
          client.add_certificate(key=lti_cert, cert=lti_cert, domain='')
          log.debug("cert %s", lti_cert)
  
      import httplib2
  
      http = httplib2.Http
      # pylint: disable=protected-access
      normalize = http._normalize_headers
  
      def my_normalize(self, headers):
          """ This function patches Authorization header """
          ret = normalize(self, headers)
          if 'authorization' in ret:
              ret['Authorization'] = ret.pop('authorization')
          log.debug("headers")
          log.debug(headers)
          return ret
  
      http._normalize_headers = my_normalize
      monkey_patch_function = normalize
      response, content = client.request(
          url,
          method,
          body=body.encode('utf-8'),
          headers={'Content-Type': content_type})
  
      http = httplib2.Http
      # pylint: disable=protected-access
      http._normalize_headers = monkey_patch_function
  
      log.debug("key %s", lti_key)
      log.debug("secret %s", secret)
      log.debug("url %s", url)
      log.debug("response %s", response)
      log.debug("content %s", format(content))
  
      return response, content
docs: Authorization header needs to be capitalized for some LTI clients
      this function ensures that header is capitalized
  
      :param body: body of the call
      :param client: OAuth Client
      :param url: outcome url
      :return: response