Plack::Middleware::Mirror - Save responses to disk to mirror a site
version 0.401
# app.psgi use Plack::Builder; builder { # other middleware... # save response to disk (beneath $dir) if uri matches enable Mirror => path => $match, mirror_dir => $dir; # your app... }; # A specific example: Build your own mirror # app.psgi use Plack::Builder; builder { # serve the request from the disk if it exists enable Static => path => $config->{match_uri}, root => $config->{mirror_dir}, pass_through => 1; # if it doesn't exist yet, request it and save it enable Mirror => path => $config->{match_uri}, mirror_dir => $config->{mirror_dir}; Plack::App::Proxy->new( remote => $config->{remote_uri} )->to_app };
NOTE: This module is in an alpha stage. Only the simplest case of static file request has been considered. Handling of anything with a QUERY_STRING is currently undefined. Suggestions, patches, and pull requests are welcome.
This middleware will save the content of the response in a tree structure reflecting the URI path info to create a mirror of the site on disk.
This is different than Plack::Middleware::Cache which saves the entire response (headers and all) to speed response time on subsequent and lessen external network usage.
In contrast this middleware saves the static file requested to the disk preserving the file name and directory structure. This creates a physical mirror of the site so that you can do other things with the directory structure if you desire.
This is probably most useful when combined with Plack::Middleware::Static and Plack::App::Proxy to build up a mirror of another site transparently, downloading only the files you actually request instead of having to spider the whole site.
However if you have a reason to copy the responses from your own web app onto disk you're certainly free to do so (a interesting form of backup perhaps).
NOTE: This middleware does not short-circuit the request (as Plack::Middleware::Cache does), so if there is no other middleware to stop the request this module will let the request continue and save the latest version of the response each time. This is considered a feature.
NOTE
This specifies the condition used to match the request (PATH_INFO). It can be either a regular expression or a callback (code ref) that can match against $_ or even modify it to alter the path of the file that will be saved to disk.
PATH_INFO
$_
It works just like the path argument to Plack::Middleware::Static since the code was stolen right from there.
path
This is the directory beneath which files will be saved.
This to an array ref of acceptable status codes to mirror. The default is [ 200 ] which means that only a normal 200 OK response will be saved.
[ 200 ]
200 OK
Set this to an empty array ref ([]) to mirror regardless of response code.
[]
Set this to true to print debugging statements to STDERR.
Accept callbacks for response/content to determine if it should be mirrored
Determine how this (should) work(s) with non-static resources (query strings)
Create Plack::App::Mirror to simplify creating simple site mirrors.
Plack::App::Mirror
Plack::Middleware::Cache
Plack::Middleware::Static
Plack::App::Proxy
You can find documentation for this module with the perldoc command.
perldoc Plack::Middleware::Mirror
The following websites have more information about this module, and may be of help to you. As always, in addition to those websites please use your favorite search engine to discover more resources.
Search CPAN
The default CPAN search engine, useful to view POD in HTML format.
http://search.cpan.org/dist/Plack-Middleware-Mirror
RT: CPAN's Bug Tracker
The RT ( Request Tracker ) website is the default bug/issue tracking system for CPAN.
http://rt.cpan.org/NoAuth/Bugs.html?Dist=Plack-Middleware-Mirror
CPAN Ratings
The CPAN Ratings is a website that allows community ratings and reviews of Perl modules.
http://cpanratings.perl.org/d/Plack-Middleware-Mirror
CPAN Testers
The CPAN Testers is a network of smokers who run automated tests on uploaded CPAN distributions.
http://www.cpantesters.org/distro/P/Plack-Middleware-Mirror
CPAN Testers Matrix
The CPAN Testers Matrix is a website that provides a visual overview of the test results for a distribution on various Perls/platforms.
http://matrix.cpantesters.org/?dist=Plack-Middleware-Mirror
CPAN Testers Dependencies
The CPAN Testers Dependencies is a website that shows a chart of the test results of all dependencies for a distribution.
http://deps.cpantesters.org/?module=Plack::Middleware::Mirror
Please report any bugs or feature requests by email to bug-plack-middleware-mirror at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Plack-Middleware-Mirror. You will be automatically notified of any progress on the request by the system.
bug-plack-middleware-mirror at rt.cpan.org
http://github.com/rwstauner/Plack-Middleware-Mirror
git clone http://github.com/rwstauner/Plack-Middleware-Mirror
Randy Stauner <rwstauner@cpan.org>
This software is copyright (c) 2011 by Randy Stauner.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
To install Plack::Middleware::Mirror, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Plack::Middleware::Mirror
CPAN shell
perl -MCPAN -e shell install Plack::Middleware::Mirror
For more information on module installation, please visit the detailed CPAN module installation guide.