EPrints Technical Mailing List Archive

See the EPrints wiki for instructions on how to join this mailing list and related information.

Message: #01306


< Previous (by date) | Next (by date) > | < Previous (in thread) | Next (in thread) > | Messages - Most Recent First | Threads - Most Recent First

[EP-tech] Re: Adding a custom PerlResponseHandler


Are there any examples of this anywhere?
(Graham, is this used in the newer Symplectic connector?)
 
Cheers,
John


From: eprints-tech-bounces@ecs.soton.ac.uk [mailto:eprints-tech-bounces@ecs.soton.ac.uk] On Behalf Of Graham Triggs
Sent: 14 November 2012 15:19
To: eprints-tech@ecs.soton.ac.uk
Subject: [EP-tech] Re: Adding a custom PerlResponseHandler

Hi,

Using EPrints 3.3, you can hang the code off of an EP_TRIGGER_URL_REWRITE trigger (in the config for a specific archive). This also has the advantage that you aren't modifying the EPrints code.

Otherwise, just test for an archive specific value in the Rewrite script, for example, a config parameter that is only set in one archive.

G


On 14 November 2012 14:21, John Salter <J.Salter@leeds.ac.uk> wrote:
Hi,
I'm trying to work out the best way to add a custom handler for a URL to a specific archive within eprints.

I can either set something like this in the vhost (and add '/foo/' to $c->{rewrite_exceptions} ):
<Location "/foo/handler">
    SetHandler perl-script
    PerlResponseHandler Foo::FooHandler
</Location>

 - OR -
I could edit ~/perl_lib/EPrints/Apache/Rewrite.pm, adding something like:
if ( $uri =~ m! ^$urlpath/foo !x )
{
  $r->handler( 'perl-script' );
  $r->set_handlers( PerlResponseHandler => [ 'Foo::FooHandler' ] );
  return OK;
}

BUT I wouldn't /really/ want to do that, as it would affect all archives, not just the one I want it to.

So, what is the *most* sensible way to do this, making it apply to only one archive? Am I missing some magic that will help me?

Cheers,
John

*** Options: http://mailman.ecs.soton.ac.uk/mailman/listinfo/eprints-tech
*** Archive: http://www.eprints.org/tech.php/
*** EPrints community wiki: http://wiki.eprints.org/