diff --git a/urlrewrite/rewriterapp.py b/urlrewrite/rewriterapp.py index f2c45633..765c39a7 100644 --- a/urlrewrite/rewriterapp.py +++ b/urlrewrite/rewriterapp.py @@ -49,11 +49,15 @@ class RewriterApp(object): full_prefix = host_prefix + rel_prefix if self.framed_replay and wb_url.mod == self.frame_mod: + extra_params = self.get_top_frame_params(wb_url, kwargs) return self.frame_insert_view.get_top_frame(wb_url, full_prefix, host_prefix, + request.environ, self.frame_mod, - self.replay_mod) + self.replay_mod, + coll='', + extra_params=extra_params) urlrewriter = UrlRewriter(wb_url, prefix=full_prefix, @@ -78,7 +82,7 @@ class RewriterApp(object): else: closest = wb_url.timestamp - upstream_url = self.get_upstream_url(url, closest, kwargs) + upstream_url = self.get_upstream_url(url, wb_url, closest, kwargs) r = requests.post(upstream_url, data=BytesIO(req_data), @@ -159,8 +163,12 @@ class RewriterApp(object): return False - def get_upstream_url(self, url, closest, kwargs): + def get_upstream_url(self, url, wb_url, closest, kwargs): raise NotImplemented() def _add_custom_params(self, cdx, kwargs): pass + + def get_top_frame_params(self, wb_url, kwargs): + return None + diff --git a/urlrewrite/templateview.py b/urlrewrite/templateview.py index b5a293e3..19039567 100644 --- a/urlrewrite/templateview.py +++ b/urlrewrite/templateview.py @@ -92,8 +92,12 @@ class BaseInsertView(object): self.insert_file = insert_file self.banner_file = banner_file - def render_to_string(self, **kwargs): + def render_to_string(self, env, **kwargs): template = self.jenv.jinja_env.get_template(self.insert_file) + params = env.get('webrec.template_params') + if params: + kwargs.update(params) + return template.render(**kwargs) @@ -124,7 +128,7 @@ class HeadInsertView(BaseInsertView): } def make_head_insert(rule, cdx): - return (self.render_to_string(wbrequest=wbrequest, + return (self.render_to_string(env, wbrequest=wbrequest, cdx=cdx, top_url=top_url, include_ts=include_ts, @@ -139,9 +143,11 @@ class TopFrameView(BaseInsertView): def get_top_frame(self, wb_url, wb_prefix, host_prefix, + env, frame_mod, replay_mod, - coll=''): + coll='', + extra_params=None): embed_url = wb_url.to_str(mod=replay_mod) @@ -165,6 +171,9 @@ class TopFrameView(BaseInsertView): url=wb_url.get_url(), banner_html=self.banner_file) - return self.render_to_string(**params) + if extra_params: + params.update(extra_params) + + return self.render_to_string(env, **params)