Loading ...
Sorry, an error occurred while loading the content.

Need some help hijacking the page output pipe

Expand Messages
  • Mark S Lowe
    I have a need to create my own suffix and hijack the output for page rendering code, and then re-output the page with my own OK. I have the O¹Reilly book
    Message 1 of 3 , Nov 11, 2004
    • 0 Attachment
      Need some help hijacking the page output pipe I have a need to create my own suffix and hijack the output for page rendering code, and then re-output the page with my own OK. I have the O’Reilly book “Practical mod_perl” and there is a great example of this on page 114 in Chapter 4. However, the example is incomplete. The example suggests that we can intercept the request for a page, remove all the HTML tags, and re-output the page. This isn’t exactly what I want to do, but it will server as a great architecture for my needs.

      I’ve got my <Files> directive working perfectly in httpd.conf, but now I need some help intercepting the page request event, re-rendering the page, and then outputting it. I imagine this is like a three line explanation, but I can’t seem to find it anywhere. I imagine it something like this:

      PerlModule MyPlatform::Converter
      <Files ~ "\.(pla)$">
          SetHandler perl-script
          PerlHandler MyPlatform::HTML2TextConverter MyPlatform:: HTMLContentGenerator
      </Files>

      I just don’t know how to grab the HTML page text once it gets to my module. STDIN doesn’t have it. So where is it?

      Suggestions?

      Thanks!

      Mark
    • Tom Schindl
      ... Well you have to read the file yourself: package MyPlatform::HTML2TextConverter MyPlatform:: HTMLContentGenerator; sub handler { # ..... my $content; local
      Message 2 of 3 , Nov 11, 2004
      • 0 Attachment
        Mark S Lowe wrote:

        > I have a need to create my own suffix and hijack the output for page
        > rendering code, and then re-output the page with my own OK. I have the
        > O’Reilly book “Practical mod_perl” and there is a great example of
        > this on page 114 in Chapter 4. However, the example is incomplete. The
        > example suggests that we can intercept the request for a page, remove
        > all the HTML tags, and re-output the page. This isn’t exactly what I
        > want to do, but it will server as a great architecture for my needs.
        >
        > I’ve got my <Files> directive working perfectly in httpd.conf, but now
        > I need some help intercepting the page request event, re-rendering the
        > page, and then outputting it. I imagine this is like a three line
        > explanation, but I can’t seem to find it anywhere. I imagine it
        > something like this:
        >
        > PerlModule MyPlatform::Converter
        > <Files ~ "\.(pla)$">
        > SetHandler perl-script
        > PerlHandler MyPlatform::HTML2TextConverter MyPlatform::
        > HTMLContentGenerator
        > </Files>
        >
        > I just don’t know how to grab the HTML page text once it gets to my
        > module. STDIN doesn’t have it. So where is it?
        >
        > Suggestions?
        >
        > Thanks!
        >
        > Mark

        Well you have to read the file yourself:

        package MyPlatform::HTML2TextConverter MyPlatform:: HTMLContentGenerator;

        sub handler {
        # .....
        my $content;

        local $/ = undef;
        open( READFILE, |$r->filename| );
        $content = <READFILE>;
        close( READFILE );
        # ...

        }

        --
        Report problems: http://perl.apache.org/bugs/
        Mail list info: http://perl.apache.org/maillist/modperl.html
        List etiquette: http://perl.apache.org/maillist/email-etiquette.html
      • Mark S Lowe
        Thank you. This worked perfectly. I was also able to add test code from chapter 4 of Writing Apache Modules with Perl and C, and add file tests. I knew my
        Message 3 of 3 , Nov 11, 2004
        • 0 Attachment
          Re: Need some help hijacking the page output pipe Thank you. This worked perfectly. I was also able to add test code from chapter 4 of Writing Apache Modules with Perl and C, and add file tests.

          I knew my first post to this mailing list had to be stupid. ;-)


          On 11/11/04 2:21 PM, "Tom Schindl" <tomAtLinux@...> wrote:

          Mark S Lowe wrote:

          > I have a need to create my own suffix and hijack the output for page
          > rendering code, and then re-output the page with my own OK. I have the
          > O’Reilly book “Practical mod_perl” and there is a great example of
          > this on page 114 in Chapter 4. However, the example is incomplete. The
          > example suggests that we can intercept the request for a page, remove
          > all the HTML tags, and re-output the page. This isn’t exactly what I
          > want to do, but it will server as a great architecture for my needs.
          >
          > I’ve got my <Files> directive working perfectly in httpd.conf, but now
          > I need some help intercepting the page request event, re-rendering the
          > page, and then outputting it. I imagine this is like a three line
          > explanation, but I can’t seem to find it anywhere. I imagine it
          > something like this:
          >
          > PerlModule MyPlatform::Converter
          > <Files ~ "\.(pla)$">
          > SetHandler perl-script
          > PerlHandler MyPlatform::HTML2TextConverter MyPlatform::
          > HTMLContentGenerator
          > </Files>
          >
          > I just don’t know how to grab the HTML page text once it gets to my
          > module. STDIN doesn’t have it. So where is it?
          >
          > Suggestions?
          >
          > Thanks!
          >
          > Mark

          Well you have to read the file yourself:

          package MyPlatform::HTML2TextConverter MyPlatform:: HTMLContentGenerator;

          sub handler {
          # .....
          my $content;

            local $/ = undef;
            open( READFILE, |$r->filename| );
            $content = <READFILE>;
            close( READFILE );
            # ...

          }

        Your message has been successfully submitted and would be delivered to recipients shortly.