Astro-SpaceTrack

 view release on metacpan or  search on metacpan

inc/Astro/SpaceTrack/Dumper.pm  view on Meta::CPAN

package Astro::SpaceTrack::Dumper;

use 5.006002;

use strict;
use warnings;

use Carp;
use JSON;

use Astro::SpaceTrack;
use HTTP::Response;
use HTTP::Status qw{ HTTP_OK };
our @ISA = qw{ Astro::SpaceTrack };

# NOTE that these live in inc/, but so does this module, so we assume
# inc/ is already in @INC.

use Mock::LWP::UserAgent;
use My::Module::Test;

our $VERSION = '0.181';

sub new {
    my ( $class, %arg ) = @_;
    local $Mock::LWP::UserAgent::CANNED_RESPONSE_FILE = delete
    $arg{canned_response_file};
    my $self = $class->SUPER::new( %arg );
    $self->{ +__PACKAGE__ } = Mock::LWP::UserAgent::__load_data(
	optional	=> 1,
    );
    return $self;
}

sub site_check {
    my ( $self, $site ) = @_;
    my $uri = My::Module::Test::__site_to_check_uri( $site )
	or die "No check URI for site '$site'\n";
    return $self->_get_from_net( url => $uri );
}

sub _readline_complete_command_site_check {
    # my ( $self, $text, $line, $start, $cmd_line ) = @_;
    my ( $self, $text ) = @_;
    my @sites = My::Module::Test::__site_codes();
    $text eq ''
	and return @sites;
    my $re = qr/ \A \Q$text\E /smx;
    return grep { $_ =~ $re } @sites;
}

sub request {
    my ( $self, $method, $uri ) = @_;
    defined $uri
	or ( $method, $uri ) = ( GET => $method );
    return $self->_get_from_net(
	method	=> uc $method,
	url	=> $uri,
    );
}

{
    my $json;
    my $keep;

    # Accessed via address space scan in _list_censors()
    sub _censor_json {	## no critic (ProhibitUnusedPrivateSubroutines)
	my ( $data ) = @_;
	$data =~ m/ \A \s* [[] \s* [{] .* [}] \s* []] \s* \z /smx
	    or return;
	$json ||= JSON->new()->utf8()->pretty()->canonical();
	$keep ||= {
	    map { $_ => 1 } qw{
		COMMENT
		COMMENTCODE
		COUNTRY
		DECAY
		FILE
		INTLDES
		LAUNCH
		LAUNCH_NUM
		LAUNCH_PIECE
		LAUNCH_YEAR
		NORAD_CAT_ID
		OBJECT_ID
		OBJECT_NAME
		OBJECT_NUMBER
		OBJECT_TYPE



( run in 1.649 second using v1.01-cache-2.11-cpan-ceb78f64989 )