Test-Reporter-Transport-Legacy

 view release on metacpan or  search on metacpan

lib/Test/Reporter/Transport/HTTPGateway.pm  view on Meta::CPAN

use strict;
BEGIN{ if (not $] < 5.006) { require warnings; warnings->import } }
package Test::Reporter::Transport::HTTPGateway;
our $VERSION = '1.59'; # VERSION

use Test::Reporter::Transport 1.58;
our @ISA = qw/Test::Reporter::Transport/;

use LWP::UserAgent;

sub new {
  my ($class, $url, $key) = @_;

  die "invalid gateway URL: must be absolute http or https URL"
    unless $url =~ /\Ahttps?:/i;

  bless { gateway => $url, key => $key } => $class;
}

sub send {
  my ($self, $report) = @_;

  # construct the "via"
  my $report_class   = ref $report;
  my $report_version = $report->VERSION;
  my $via = "$report_class $report_version";
  $via .= ', via ' . $report->via if $report->via;
  my $perl_version = $report->perl_version->{_version};
  # post the report
  my $ua = LWP::UserAgent->new;
  $ua->timeout(60);
  $ua->env_proxy;

  my $form = {
    key     => $self->{key},
    via     => $via,
    perl_version => $perl_version,
    from    => $report->from,
    subject => $report->subject,
    report  => $report->report,
  };

  my $res = $ua->post($self->{gateway}, $form);

  return 1 if $res->is_success;

  die sprintf "HTTP error: %s: %s", $res->status_line, $res->content;
}

1;

# ABSTRACT: HTTP transport for Test::Reporter



=pod

=head1 NAME

Test::Reporter::Transport::HTTPGateway - HTTP transport for Test::Reporter

=head1 VERSION

version 1.59

=head1 SYNOPSIS

    my $report = Test::Reporter->new(
        transport => 'HTTPGateway',
        transport_args => [ $url, $key ],
    );

=head1 DESCRIPTION

This module transmits a Test::Reporter report via HTTP to a
L<Test::Reporter::HTTPGateway> server (or something with an equivalent API).

 view all matches for this distribution
 view release on metacpan -  search on metacpan

( run in 0.826 second using v1.00-cache-2.02-grep-82fe00e-cpan-9e6bc14194b )