summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/lib/metacpan.pm')
-rw-r--r--scripts/lib/metacpan.pm41
1 files changed, 41 insertions, 0 deletions
diff --git a/scripts/lib/metacpan.pm b/scripts/lib/metacpan.pm
new file mode 100644
index 000000000..f80d7dbb0
--- /dev/null
+++ b/scripts/lib/metacpan.pm
@@ -0,0 +1,41 @@
+use strict;
+use warnings;
+
+# FILENAME: metacpan.pm
+# CREATED: 25/10/11 00:29:25 by Kent Fredric (kentnl) <kentfredric@gmail.com>
+# ABSTRACT: A thin shim wrapper for metacpan::api with caching.
+#
+package metacpan;
+use File::Spec;
+
+use Sub::Exporter -setup => { exports => [ mcpan => \&build_mcpan ], };
+
+sub build_mcpan {
+ my $mcpan;
+ return sub {
+ $mcpan ||= do {
+ require CHI;
+ my $cache = CHI->new(
+ driver => 'File',
+ root_dir => File::Spec->catdir( File::Spec->tmpdir, 'gentoo-metacpan-cache' ),
+ );
+ require WWW::Mechanize::Cached;
+ my $mech = WWW::Mechanize::Cached->new(
+ cache => $cache,
+ timeout => 20000,
+ autocheck => 1,
+ );
+ require HTTP::Tiny::Mech;
+ my $tinymech = HTTP::Tiny::Mech->new( mechua => $mech );
+ require MetaCPAN::API;
+
+ MetaCPAN::API->new( ua => $tinymech );
+
+ };
+ return $mcpan;
+
+ };
+}
+
+1;
+