view release on metacpan or search on metacpan
lib/App/Spoor/ApiClient.pm view on Meta::CPAN
=cut
sub most_recent_reports {
my $host = shift;
my $user_agent = shift;
my $config = shift;
my $uri = $config->{host} . '/api/reports?' . http_build_query({reports => {host => $host}});
my $credentials = 'Basic ' . encode_base64(
$config->{credentials}{api_identifier} . ':' . $config->{credentials}{api_secret}
);
my $response = $user_agent->get(
$uri,
'Authorization' => $credentials,
'HTTP-Accept' => 'application/json'
);
from_json($response->content)->{reports};
}
=head2 most_recent_mailbox_events
Fetches the most recent mailbox events from the SpoorAPI.
lib/App/Spoor/ApiClient.pm view on Meta::CPAN
=cut
sub most_recent_mailbox_events {
my $host = shift;
my $user_agent = shift;
my $config = shift;
my $uri = $config->{host} . '/api/mailbox_events?' . http_build_query({mailbox_events => {host => $host}});
my $credentials = 'Basic ' . encode_base64(
$config->{credentials}{api_identifier} . ':' . $config->{credentials}{api_secret}
);
my $response = $user_agent->get(
$uri,
'Authorization' => $credentials,
'HTTP-Accept' => 'application/json'
);
from_json($response->content)->{mailbox_events};
}
=head1 AUTHOR
Rory McKinley, C<< <rorymckinley at capefox.co> >>
lib/App/Spoor/Config.pm view on Meta::CPAN
debug: 1
maxinterval: 10
name: /usr/local/cpanel/logs/error_log
transformer: bin/login_log_transformer.pl
login:
debug: 1
maxinterval: 10
name: /usr/local/cpanel/logs/login_log
transformer: bin/login_log_transformer.pl
transmission:
credentials:
api_identifier: api_identifier_goes_here
api_secret: api_secret_goes_here
endpoints:
report: /api/reports
host: https://spoor.capefox.co
=head1 SUBROUTINES/METHODS
=head2 get_follower_config
lib/App/Spoor/EntryTransmitter.pm view on Meta::CPAN
=cut
sub transmit {
my $data = shift;
my $ua = shift;
my $config = shift;
my $uri = $config->{host} . $config->{endpoints}{report};
my $credentials = 'Basic ' . encode_base64(
$config->{credentials}{api_identifier} . ':' . $config->{credentials}{api_secret}
);
my $content = to_json({
report => {
entries => [
$data
],
metadata => {
reporter => $config->{reporter}
}
},
});
my $result = $ua->post(
$uri,
'Content-Type' => 'application/json',
'Authorization' => $credentials,
'Content' => $content
);
$result->code() eq '202';
}
=head1 AUTHOR
Rory McKinley, C<< <rorymckinley at capefox.co> >>
lib/App/Spoor/Installer.pm view on Meta::CPAN
transformer => 'bin/login_log_transformer.pl',
},
error => {
name => $install_parameters->{'error_log_path'},
maxinterval => 10,
debug => 1,
transformer => 'bin/login_log_transformer.pl',
},
},
transmission => {
credentials => {
api_identifier => $install_parameters->{'api_identifier'},
api_secret => $install_parameters->{'api_secret'},
},
host => 'https://spoor.capefox.co',
endpoints => {
report => '/api/reports',
}
}
});
t/ApiCient.t view on Meta::CPAN
use strict;
use warnings;
use utf8;
use Test::More;
use Test::LWP::UserAgent;
use MIME::Base64 qw(encode_base64);
use JSON;
my %config = (
credentials => {
api_identifier => 'user123',
api_secret => 'secret',
},
host => 'http://localhost:3000',
endpoints => {
report => '/api/reports',
},
reporter => 'spoor.test.capefox.co'
);
t/ApiCient.t view on Meta::CPAN
'most_recent_reports correctly builds the URI'
);
is(
$last_request->header('HTTP-Accept'),
'application/json',
'most_recent_reports accepts JSON'
);
is(
$last_request->header('Authorization'),
'Basic ' . encode_base64('user123:secret'),
'most_recent_reports Sets basic auth credentials'
);
is_deeply($result, \@reports_data, 'most_recent_reports returns a reference to the reports from the API');
ok(defined(&App::Spoor::ApiClient::most_recent_mailbox_events), 'App::Spoor::ApiClient::most_recent_reports is defined');
$ua = Test::LWP::UserAgent->new;
my @mailbox_events_data = (
{
id => '456-GHI',
t/ApiCient.t view on Meta::CPAN
"http://localhost:3000/api/mailbox_events?mailbox_events%5Bhost%5D=$host",
'most_recent_mailbox_events correctly builds the URI');
is(
$last_request->header('HTTP-Accept'),
'application/json',
'most_recent_mailbox_events accepts JSON'
);
is(
$last_request->header('Authorization'),
'Basic ' . encode_base64('user123:secret'),
'most_recent_mailbox_events Sets basic auth credentials'
);
is_deeply($result, \@mailbox_events_data, 'most_recent_mailbox_events returns a reference to the reports from the API');
done_testing();
transformer => 'bah',
},
access => {
name => '/foo/bar/baz/access',
maxinterval => 50,
debug => 1,
transformer => 'foo',
}
},
transmission => {
credentials => {
api_identifier => 'user123',
api_secret => 'secret',
},
host => 'https://spoor.capefox.co',
endpoints => {
report => '/api/reports',
partial_report_log => '/api/partial_reports/log',
}
}
);
t/EntryTransmitter.t view on Meta::CPAN
use strict;
use warnings;
use utf8;
use Test::More;
use Test::LWP::UserAgent;
use MIME::Base64 qw(encode_base64);
use JSON;
my %config = (
credentials => {
api_identifier => 'user123',
api_secret => 'secret',
},
host => 'http://localhost:3000',
endpoints => {
report => '/api/reports',
},
reporter => 'spoor.test.capefox.co'
);
t/EntryTransmitter.t view on Meta::CPAN
},
);
App::Spoor::EntryTransmitter::transmit(\%login_data, $ua, \%config);
my $last_request = $ua->last_http_request_sent;
is($last_request->method(), 'POST', 'Posts login data to the api');
is($last_request->uri(), 'http://localhost:3000/api/reports', 'URI is correct');
is($last_request->header('Content-Type'), 'application/json', 'JSON content type');
is($last_request->header('Authorization'), 'Basic ' . encode_base64('user123:secret'), 'Sets basic auth credentials');
is_deeply(from_json($last_request->content()), \%submitted_login_content, 'Submits the login data correctly');
my %forward_added_partial_data = (
type => 'forward_added_partial',
foo => 'bar'
);
my %submitted_forward_added_partial_content = (
report => {
entries => [
t/EntryTransmitter.t view on Meta::CPAN
},
);
App::Spoor::EntryTransmitter::transmit(\%forward_added_partial_data, $ua, \%config);
$last_request = $ua->last_http_request_sent;
is($last_request->method(), 'POST', 'Posts forward_added_partial data to the api');
is($last_request->uri(), 'http://localhost:3000/api/reports', 'URI is correct');
is($last_request->header('Content-Type'), 'application/json', 'JSON content type');
is($last_request->header('Authorization'), 'Basic ' . encode_base64('user123:secret'), 'Sets basic auth credentials');
is_deeply(
from_json($last_request->content()),
\%submitted_forward_added_partial_content,
'Submits the added forward partial data correctly'
);
$ua = Test::LWP::UserAgent->new;
$ua->map_response(qr{reports}, HTTP::Response->new('202', 'OK', [], ''));
ok(
App::Spoor::EntryTransmitter::transmit(\%forward_added_partial_data, $ua, \%config),
t/Installer.t view on Meta::CPAN
transformer => 'bin/login_log_transformer.pl',
},
error => {
name => $installation_config{'error_log_path'},
maxinterval => 10,
debug => 1,
transformer => 'bin/login_log_transformer.pl',
},
},
transmission => {
credentials => {
api_identifier => $installation_config{'api_identifier'},
api_secret => $installation_config{'api_secret'},
},
host => 'https://spoor.capefox.co',
endpoints => {
report => '/api/reports',
}
}
);