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)
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)
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)
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)
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)