Created
March 13, 2011 00:32
-
-
Save dougwilson/867743 to your computer and use it in GitHub Desktop.
Hypothetical Test-Reporter-Transport-Metabase-CPANTesters distribution
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This is a HYPOTHETICAL distribution to give easy secure access to | |
the CPAN Testers metabase over SSL with libwww-perl 6+. | |
# UPDATE | |
This distribution, even hypothetical as it was, is no longer needed | |
as a solution to the problem this module was written for has been | |
resolved. Please see | |
[CPAN Testers Metabase has a certificate](http://somethingdoug.com/thoughts/2011/03/15/cpan-testers-metabase-has-a-certificate/). | |
for information. The short script mentioned in the article to set | |
your `CPAN::Reporter` configuration back is included with this | |
distribution as `scripts/set_official_config.pl`. See `UNINSTALL` | |
for full instructions on how to uninstall the distribution. | |
To use this module for your CPAN::Reporter transport, edit your | |
`~/.cpanreporter/config.ini` file's transport directive to be | |
transport = Metabase::CPANTesters id_file ~/your/id_file.json | |
Note: I used Moose in these modules since they are hypothetical | |
and it made it much faster to create. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
use Module::Build 0.36; | |
eval { check_cpan_reporter_config(); }; | |
my $class = Module::Build->subclass( | |
class => 'My::Module::Build::WithUninstall', | |
code => <<' ...', | |
sub ACTION_uninstall { | |
my $self = shift; | |
if (exists $self->install_map->{write} && -e $self->install_map->{write}) { | |
require ExtUtils::Install; | |
# Get the destination packlist | |
my $packlist = $self->install_map->{write}; | |
# Uninstall the files listed in the packlist | |
ExtUtils::Install::uninstall($packlist, $self->verbose); | |
} | |
} | |
... | |
); | |
my $build = $class->new( | |
module_name => 'Test::Reporter::Transport::Metabase::CPANTesters', | |
# Module that are required | |
requires => { | |
'File::ShareDir' => '1.03', | |
'IO::Socket::SSL' => 0, | |
'LWP::UserAgent' => '6.00', | |
'Metabase::Client::Simple' => '0.008', | |
'Moose' => '1.24', | |
'MooseX::NonMoose' => '0.19', | |
'Test::Reporter::Transport::Metabase' => '1.999008', | |
}, | |
share_dir => 'share', | |
); | |
$build->create_build_script; | |
sub check_cpan_reporter_config { | |
# Load CPAN::Reporter configuration module | |
require CPAN::Reporter::Config; | |
# Open the configuration | |
my $config = CPAN::Reporter::Config::_open_config_file(); | |
if (!$config) { | |
# Unable to read configuration | |
print <<" NOTE"; | |
*************************** NOTE *************************** | |
After installation, please setup your CPAN::Reporter config | |
and set the transport line according to the README. | |
************************************************************ | |
NOTE | |
return; | |
} | |
# Get the file name of the configuration | |
my $file_name = CPAN::Reporter::Config::_get_config_file(); | |
# Read the transport configuration | |
my $transport = $config->{_}->{transport}; | |
if (defined $transport) { | |
# Change the transport option into readable variables | |
my ($class, %args) = split m{\s+}mosx, $transport; | |
if ($class eq 'Metabase' && | |
defined $args{uri} && | |
$args{uri} eq 'https://metabase.cpantesters.org/api/v1/') { | |
# Looks like the user should change to this distribution | |
delete $args{uri}; | |
my $transport_args = join q{ }, %args; | |
print <<" NOTE"; | |
*************************** NOTE *************************** | |
After installation, please change your CPAN::Reporter config | |
file to use this transport. You can do this by modifying | |
$file_name | |
and replacing the line | |
transport = $transport | |
with | |
transport = Metabase::CPANTesters $transport_args | |
************************************************************ | |
NOTE | |
} | |
} | |
return; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package Metabase::Client::CPANTesters 0.000; | |
use Moose 1.24; | |
use MooseX::NonMoose 0.19; | |
use File::ShareDir 1.03; | |
extends 'Metabase::Client::Simple'; | |
around _ua => sub { | |
my $orig = shift; | |
my $self = shift; | |
my $ua_was_generated = !$self->{_ua}; | |
# Get the standard generated UA | |
my $ua = $self->$orig(@_); | |
if ($ua_was_generated) { | |
# Add our SSL options to the UA | |
$ua->ssl_opts(SSL_ca_file => File::ShareDir::dist_file('Test-Reporter-Transport-Metabase-CPANTesters', 'metabase.cpantesters.org.crt')); | |
} | |
return $ua; | |
}; | |
no Moose; | |
__PACKAGE__->meta->make_immutable; | |
1; | |
__END__ | |
=head1 NAME | |
Metabase::Client::CPANTesters - HYPOTHETICAL Metabase client for CPAN Testers | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package Test::Reporter::Transport::Metabase::CPANTesters 0.000; | |
use Moose 1.24; | |
use Test::Reporter::Transport::Metabase 1.999008; | |
has id_file => ( | |
is => 'ro', | |
isa => 'Str', | |
required => 1, | |
); | |
has metabase_transport => ( | |
is => 'ro', | |
isa => 'Test::Reporter::Transport::Metabase', | |
init_arg => undef, | |
lazy_build => 1, | |
handles => qr{.+}mosx, | |
); | |
has uri => ( | |
is => 'ro', | |
isa => 'Str', | |
default => 'https://metabase.cpantesters.org/api/v1/', | |
); | |
sub _build_metabase_transport { | |
my $self = shift; | |
return Test::Reporter::Transport::Metabase->new( | |
client => 'Metabase::Client::CPANTesters', | |
id_file => $self->id_file, | |
uri => $self->uri, | |
); | |
} | |
no Moose; | |
__PACKAGE__->meta->make_immutable; | |
1; | |
__END__ | |
=head1 NAME | |
Test::Reporter::Transport::Metabase::CPANTesters - HYPOTHETICAL Metabase transport for CPAN Testers |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This is a HYPOTHETICAL distribution to give easy secure access to | |
the CPAN Testers metabase over SSL with libwww-perl 6+. | |
perl Build.PL | |
perl Build | |
perl Build installdeps | |
perl Build install | |
perl Build realclean |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Build.PL | |
INSTALL | |
lib/Metabase/Client/CPANTesters.pm | |
lib/Test/Reporter/Transport/Metabase/CPANTesters.pm | |
MANIFEST | |
META.json | |
META.yml | |
README | |
scripts/set_official_config.pl | |
share/metabase.cpantesters.org.crt | |
UNINSTALL |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"abstract" : "HYPOTHETICAL Metabase transport for CPAN Testers", | |
"author" : [ | |
"unknown" | |
], | |
"dynamic_config" : 1, | |
"generated_by" : "Module::Build version 0.38, CPAN::Meta::Converter version 2.110580", | |
"license" : [ | |
"unknown" | |
], | |
"meta-spec" : { | |
"url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", | |
"version" : "2" | |
}, | |
"name" : "Test-Reporter-Transport-Metabase-CPANTesters", | |
"prereqs" : { | |
"configure" : { | |
"requires" : { | |
"Module::Build" : "0.38" | |
} | |
}, | |
"runtime" : { | |
"requires" : { | |
"File::ShareDir" : "1.03", | |
"IO::Socket::SSL" : 0, | |
"LWP::UserAgent" : "6.00", | |
"Metabase::Client::Simple" : "0.008", | |
"Moose" : "1.24", | |
"MooseX::NonMoose" : "0.19", | |
"Test::Reporter::Transport::Metabase" : "1.999008" | |
} | |
} | |
}, | |
"provides" : { | |
"Metabase::Client::CPANTesters" : { | |
"file" : "lib/Metabase/Client/CPANTesters.pm", | |
"version" : 0 | |
}, | |
"Test::Reporter::Transport::Metabase::CPANTesters" : { | |
"file" : "lib/Test/Reporter/Transport/Metabase/CPANTesters.pm", | |
"version" : 0 | |
} | |
}, | |
"release_status" : "stable", | |
"version" : "0.000" | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
abstract: 'HYPOTHETICAL Metabase transport for CPAN Testers' | |
author: | |
- unknown | |
build_requires: {} | |
configure_requires: | |
Module::Build: 0.38 | |
dynamic_config: 1 | |
generated_by: 'Module::Build version 0.38, CPAN::Meta::Converter version 2.110580' | |
license: unknown | |
meta-spec: | |
url: http://module-build.sourceforge.net/META-spec-v1.4.html | |
version: 1.4 | |
name: Test-Reporter-Transport-Metabase-CPANTesters | |
provides: | |
Metabase::Client::CPANTesters: | |
file: lib/Metabase/Client/CPANTesters.pm | |
version: 0 | |
Test::Reporter::Transport::Metabase::CPANTesters: | |
file: lib/Test/Reporter/Transport/Metabase/CPANTesters.pm | |
version: 0 | |
requires: | |
File::ShareDir: 1.03 | |
IO::Socket::SSL: 0 | |
LWP::UserAgent: 6.00 | |
Metabase::Client::Simple: 0.008 | |
Moose: 1.24 | |
MooseX::NonMoose: 0.19 | |
Test::Reporter::Transport::Metabase: 1.999008 | |
version: 0.000 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-----BEGIN CERTIFICATE----- | |
MIIDRjCCAq+gAwIBAgIJAJ6JIAAh+7ZVMA0GCSqGSIb3DQEBBQUAMHYxCzAJBgNV | |
BAYTAlVTMREwDwYDVQQIEwhOZXcgWW9yazERMA8GA1UEBxMITmV3IFlvcmsxHjAc | |
BgNVBAoTFUNQQU4gVGVzdGVycyBNZXRhYmFzZTEhMB8GA1UEAxMYbWV0YWJhc2Uu | |
Y3BhbnRlc3RlcnMub3JnMB4XDTEwMDIxODE5MjkyNVoXDTEyMTExNDE5MjkyNVow | |
djELMAkGA1UEBhMCVVMxETAPBgNVBAgTCE5ldyBZb3JrMREwDwYDVQQHEwhOZXcg | |
WW9yazEeMBwGA1UEChMVQ1BBTiBUZXN0ZXJzIE1ldGFiYXNlMSEwHwYDVQQDExht | |
ZXRhYmFzZS5jcGFudGVzdGVycy5vcmcwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJ | |
AoGBANrCjEpVS4lsgDcrYrSm0U6b64LwGlGEPkG80yvBmFvP+yue4KU0Z8MVNoZj | |
BF+cY73xP28Tg3xuGb4pbPmBo7XrQv6H4nzxLgcp0fljeI++Z70KYHPWZ34+zIao | |
67JJw0R656T8xpBaKZdstWnEhvRsjX7Bf8+ysK3xfCWKCZeLAgMBAAGjgdswgdgw | |
HQYDVR0OBBYEFM/97yImTvtUUhzWd6lfCd+7MiSHMIGoBgNVHSMEgaAwgZ2AFM/9 | |
7yImTvtUUhzWd6lfCd+7MiSHoXqkeDB2MQswCQYDVQQGEwJVUzERMA8GA1UECBMI | |
TmV3IFlvcmsxETAPBgNVBAcTCE5ldyBZb3JrMR4wHAYDVQQKExVDUEFOIFRlc3Rl | |
cnMgTWV0YWJhc2UxITAfBgNVBAMTGG1ldGFiYXNlLmNwYW50ZXN0ZXJzLm9yZ4IJ | |
AJ6JIAAh+7ZVMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAShlhs/P3 | |
YtOVisV6QNs56fKvTsHNxwg2+iP2EI5UmhYOwJdgsIic/QEKDEY73ve58MN3yehc | |
i3Kgjlkh8nw65TAxHnY47Bz4rAcMh/mxTXVXI/RQYZvWOWMdcHG5VPVZXm5krbZB | |
45FHcmV/Qb+Zig4ry/TAp7wrad4pH60ls/c= | |
-----END CERTIFICATE----- |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env perl | |
use 5.006; | |
use CPAN::Reporter::Config; | |
my $config_file = CPAN::Reporter::Config::_get_config_file(); | |
my $config = CPAN::Reporter::Config::_open_config_file(); | |
my ($class, %args) = split m{\s+}mosx, $config->{_}->{transport}; | |
if ($class eq 'Metabase::CPANTesters') { | |
print "Modifying configuration file transport line from\n", $config->{_}->{transport}, "\n"; | |
# Correct the transport information | |
$class = 'Metabase'; | |
$args{uri} = 'https://metabase.cpantesters.org/api/v1/'; | |
$config->{_}->{transport} = "$class " . join q{ }, %args; | |
print "to\n", $config->{_}->{transport}, "\n"; | |
# Write the configuration | |
$config->write($config_file); | |
print "Done\n"; | |
} | |
elsif ($config->{_}->{transport}) { | |
# Modification does not look necessary | |
print "Leaving transport configuration set to\n", $config->{_}->{transport}, "\n"; | |
} | |
else { | |
# Modification does not look like it should occur | |
print "Not modifying configuration without transport directive\n"; | |
} | |
exit 0; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This is a HYPOTHETICAL distribution to give easy secure access to | |
the CPAN Testers metabase over SSL with libwww-perl 6+. | |
Now that this distribution is no longer needed, here are the | |
uninstall instructions: | |
perl Build.PL | |
perl script/set_official_config.pl | |
perl Build uninstall | |
perl Build realclean |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment