zoom: more configurable format for contentProxy@server
authorAdam Dickmeiss <adam@indexdata.dk>
Wed, 18 Apr 2012 08:13:37 +0000 (10:13 +0200)
committerAdam Dickmeiss <adam@indexdata.dk>
Wed, 18 Apr 2012 08:13:37 +0000 (10:13 +0200)
The proxy attribute of contentProxy element may include a %s magic,
which will be substituted by the session ID. For example
server="proxy.indexdata.com/%s"

src/filter_zoom.cpp

index bf6f4ab..ae29e0d 100644 (file)
@@ -1411,9 +1411,24 @@ Z_Records *yf::Zoom::Frontend::get_records(Package &package,
         
         if (b->enable_cproxy && b->content_session_id.length())
         {
-            wrbuf_printf(cproxy_host, "\"%s.%s/\"",
-                         b->content_session_id.c_str(),
-                         m_p->content_proxy_server.c_str());
+            const char *proxy_server_cstr = m_p->content_proxy_server.c_str();
+            const char *session_sub = strstr(proxy_server_cstr, "%s");
+            
+            if (session_sub)
+            {
+                wrbuf_puts(cproxy_host, "\"");
+                wrbuf_write(cproxy_host, proxy_server_cstr, 
+                            session_sub - proxy_server_cstr);
+                wrbuf_puts(cproxy_host, b->content_session_id.c_str());
+                wrbuf_puts(cproxy_host, session_sub + 2);
+                wrbuf_puts(cproxy_host, "/\"");
+            }
+            else
+            {
+                wrbuf_printf(cproxy_host, "\"%s.%s/\"",
+                             b->content_session_id.c_str(),
+                             proxy_server_cstr);
+            }
             xsl_parms[0] = "cproxyhost";
             xsl_parms[1] = wrbuf_cstr(cproxy_host);
             xsl_parms[2] = 0;