def __call__(self, env, start_response):
     """ Handle incoming request. Transform. And send downstream. """
     request = Request(env)
     if env['KEYSTONE_API_VERSION'] in ['1.0', '1.1']:
         params = {
             "auth": {
                 "passwordCredentials": {
                     "username": utils.get_auth_user(request),
                     "password": utils.get_auth_key(request)
                 }
             }
         }
         #Make request to keystone
         new_request = Request.blank('/tokens')
         new_request.method = 'POST'
         new_request.headers['Content-type'] = 'application/json'
         new_request.accept = 'text/json'
         new_request.body = json.dumps(params)
         response = new_request.get_response(self.app)
         #Handle failures.
         if not str(response.status).startswith('20'):
             return response(env, start_response)
         headers = self.__transform_headers(json.loads(response.body))
         resp = utils.send_legacy_result(204, headers)
         return resp(env, start_response)
     else:
         # Other calls pass to downstream WSGI component
         return self.app(env, start_response)
예제 #2
0
 def __call__(self, env, start_response):
     """ Handle incoming request. Transform. And send downstream. """
     self.start_response = start_response
     self.env = env
     self.request = Request(env)
     if self.request.path.startswith('/v1.0'
             ) or self.request.path.startswith('/v1.1'):
         params = {"passwordCredentials":
             {"username": utils.get_auth_user(self.request),
                 "password": utils.get_auth_key(self.request)}}
         #Make request to keystone
         new_request = Request.blank('/v2.0/tokens')
         new_request.method = 'POST'
         new_request.headers['Content-type'] = 'application/json'
         new_request.accept = 'text/json'
         new_request.body = json.dumps(params)
         response = new_request.get_response(self.app)
         #Handle failures.
         if not str(response.status).startswith('20'):
             return response(env, start_response)
         headers = self.__transform_headers(
             json.loads(response.body))
         resp = utils.send_legacy_result(204, headers)
         return resp(env, start_response)
     else:
         # Other calls pass to downstream WSGI component
         return self.app(self.env, self.start_response)
예제 #3
0
 def __call__(self, env, start_response):
     """ Handle incoming request. Transform. And send downstream. """
     logger.debug("Entering AuthProtocol.__call__")
     request = Request(env)
     if env.get('KEYSTONE_API_VERSION') in ['1.0', '1.1']:
         logger.debug("This is a v%s call, so taking over" %
                      env.get('KEYSTONE_API_VERSION'))
         params = {"auth": {"passwordCredentials":
             {"username": utils.get_auth_user(request),
                 "password": utils.get_auth_key(request)}}}
         #Make request to keystone
         new_request = Request.blank('/tokens')
         new_request.method = 'POST'
         new_request.headers['Content-type'] = 'application/json'
         new_request.accept = 'application/json'
         new_request.body = json.dumps(params)
         logger.debug("Sending v2.0-formatted request downstream")
         response = new_request.get_response(self.app)
         logger.debug("Got back %s" % response.status)
         #Handle failures.
         if not str(response.status).startswith('20'):
             return response(env, start_response)
         headers = self.__transform_headers(
             json.loads(response.body))
         logger.debug("Transformed the response. Responding to v1.x client")
         resp = utils.send_legacy_result(204, headers)
         return resp(env, start_response)
     else:
         logger.debug("Not a v1.0/v1.1 call, so passing downstream")
         return self.app(env, start_response)
예제 #4
0
 def __call__(self, env, start_response):
     """ Handle incoming request. Transform. And send downstream. """
     logger.debug("Entering AuthProtocol.__call__")
     request = Request(env)
     if env.get('KEYSTONE_API_VERSION') in ['1.0', '1.1']:
         logger.debug("This is a v%s call, so taking over" %
                      env.get('KEYSTONE_API_VERSION'))
         params = {"auth": {"passwordCredentials":
             {"username": utils.get_auth_user(request),
                 "password": utils.get_auth_key(request)}}}
         #Make request to keystone
         new_request = Request.blank('/tokens')
         new_request.method = 'POST'
         new_request.headers['Content-type'] = 'application/json'
         new_request.accept = 'application/json'
         new_request.body = json.dumps(params)
         logger.debug("Sending v2.0-formatted request downstream")
         response = new_request.get_response(self.app)
         logger.debug("Got back %s" % response.status)
         #Handle failures.
         if not str(response.status).startswith('20'):
             return response(env, start_response)
         headers = self.__transform_headers(
             json.loads(response.body))
         logger.debug("Transformed the response. Responding to v1.x client")
         resp = utils.send_legacy_result(204, headers)
         return resp(env, start_response)
     else:
         logger.debug("Not a v1.0/v1.1 call, so passing downstream")
         return self.app(env, start_response)
예제 #5
0
    def command_generate(self):
        from front.environment import FrontEnvironment, environment
        from front.urls import app
        env = VersionedStorage(FrontEnvironment,
                               Request.blank('/'),
                               Reverse.from_handler(app))
        for lang in self.langs:
            env.lang = Lang(env, lang)
            env.models = getattr(models.front, lang)
            for error in self.errors:
                handler = environment | (
                        lambda env, data: env.render_to_string('errors/' + error, {}))
                tmpl = handler(env, VersionedStorage()).encode('utf-8')
                out = os.path.join(env.cfg.STATIC, lang, error+'.html')

                if os.path.isfile(out):
                    with open(out, 'r') as f:
                        existing = f.read()
                        if existing == tmpl:
                            continue

                with open(out, 'w') as f:
                    f.write(tmpl)
                logger.info("Rendered %s/%s.html", lang, error)