Hey Amrit,

Have you looked at the rewriterpipeline example of acs commons? It rewrites css 
urls too:
https://github.com/Adobe-Consulting-Services/acs-aem-commons/blob/master/bundle/src/main/java/com/adobe/acs/commons/rewriter/impl/VersionedClientlibsTransformerFactory.java
 
<https://github.com/Adobe-Consulting-Services/acs-aem-commons/blob/master/bundle/src/main/java/com/adobe/acs/commons/rewriter/impl/VersionedClientlibsTransformerFactory.java>

Greets,
Roy
> On 26 May 2017, at 08:28, Amrit Verma <[email protected]> wrote:
> 
> Hi,
> 
> I have a use case(explained below) where I want to rewrite the URLs present 
> in a CSS file being returned in servlet response. I had a look at the current 
> sling rewriter pipeline but I was not able to rewrite CSS files using that 
> even if I provided a Generator(to parse the CSS file) and a Serializer(to 
> write CSS to response). I did some debugging and found that RewriterResponse 
> from ContentDispositionFilter [1] doesn't initiate the rewriting pipeline as 
> is done by the RewriterResponse [2] used by RewriterFilter [3]. 
> RewriterResponse from ContentDispositionFilter gets called if file is 
> delivered using OutputStream instead of Writer.
> 
> I added a method getOutputStream to RewriterResponse in 
> ContentDispositionFilter and initiated the pipeline (by calling getProcessor) 
> in that method just as done in getWriter method of RewriterResponse [2] and I 
> was able to get my Generator working. I have a commit [4] showing the changes 
> in I did in sling. Can someone have a look at it and check if we can 
> incorporate such a change in sling?
> It's only a draft and is missing on Javadocs. Also there are some changes 
> related to annotations. Please ignore them. I had to do that because of sling 
> issue [5] which is fixed now.
> 
> Use Case - Using a CDN to deliver secure content from our Application Server
> Rewriter pipeline is being used to rewrite internal links to CSS files in 
> html response delivered from Application Server. The rewritten links point to 
> a CDN server and contain a signature as query parameter. When browser 
> requests a CSS file from CDN for the first time, there is cache miss on CDN 
> and it forwards the request along with the signature to our application 
> server. The signature is validated and the app server returns CSS file to CDN 
> which is delivered to browser.
> Now, if the CSS file contains links to resources, for example a URL to image 
> in background-image property, that image would be requested from CDN and CDN 
> would forward it to app server but app server wouldn't return the image 
> unless the signature is passed in request parameter. So we want to rewrite 
> the CSS file being returned by app server so that all the URLs are rewritten 
> to contain the signature parameter.
> 
> Thanks
> Amrit
> 
> [1]: 
> https://github.com/apache/sling/blob/trunk/contrib/extensions/security/src/main/java/org/apache/sling/security/impl/ContentDispositionFilter.java
> [2]: 
> https://github.com/apache/sling/blob/trunk/contrib/extensions/rewriter/src/main/java/org/apache/sling/rewriter/impl/RewriterResponse.java
> [3]: 
> https://github.com/apache/sling/blob/trunk/contrib/extensions/rewriter/src/main/java/org/apache/sling/rewriter/impl/RewriterFilter.java
> [4]: 
> https://github.com/averma21/sling/commit/c2e0464510407b4384f9079192943e87599566d9
> [5]: https://issues.apache.org/jira/browse/SLING-6879
> 
> 
> 
> 

Attachment: signature.asc
Description: Message signed with OpenPGP

Reply via email to