App-finquotehist
view release on metacpan or search on metacpan
"Complete::Module" : "0",
"Data::Sah::Coerce::perl::To_date::From_float::epoch" : "0",
"Data::Sah::Coerce::perl::To_date::From_obj::datetime" : "0",
"Data::Sah::Coerce::perl::To_date::From_obj::time_moment" : "0",
"Data::Sah::Coerce::perl::To_date::From_str::iso8601" : "0",
"Data::Sah::Coerce::perl::To_date::From_str::natural" : "0",
"Data::Sah::Coerce::perl::To_str::From_str::normalize_perl_modname" : "0",
"Data::Sah::Compiler::perl::TH::array" : "0",
"Data::Sah::Compiler::perl::TH::date" : "0",
"Data::Sah::Compiler::perl::TH::str" : "0",
"DateTime" : "0",
"Finance::QuoteHist" : "0",
"Log::ger" : "0.027",
"PERLANCAR::Module::List" : "0.004004",
"Perinci::CmdLine::Any" : "0",
"Sah::Schema::perl::modname" : "0",
"perl" : "5.010001",
"strict" : "0",
"warnings" : "0"
}
},
Complete::Module: '0'
Data::Sah::Coerce::perl::To_date::From_float::epoch: '0'
Data::Sah::Coerce::perl::To_date::From_obj::datetime: '0'
Data::Sah::Coerce::perl::To_date::From_obj::time_moment: '0'
Data::Sah::Coerce::perl::To_date::From_str::iso8601: '0'
Data::Sah::Coerce::perl::To_date::From_str::natural: '0'
Data::Sah::Coerce::perl::To_str::From_str::normalize_perl_modname: '0'
Data::Sah::Compiler::perl::TH::array: '0'
Data::Sah::Compiler::perl::TH::date: '0'
Data::Sah::Compiler::perl::TH::str: '0'
DateTime: '0'
Finance::QuoteHist: '0'
Log::ger: '0.027'
PERLANCAR::Module::List: '0.004004'
Perinci::CmdLine::Any: '0'
Sah::Schema::perl::modname: '0'
perl: '5.010001'
strict: '0'
warnings: '0'
resources:
bugtracker: https://rt.cpan.org/Public/Dist/Display.html?Name=App-finquotehist
Makefile.PL view on Meta::CPAN
"Complete::Module" => 0,
"Data::Sah::Coerce::perl::To_date::From_float::epoch" => 0,
"Data::Sah::Coerce::perl::To_date::From_obj::datetime" => 0,
"Data::Sah::Coerce::perl::To_date::From_obj::time_moment" => 0,
"Data::Sah::Coerce::perl::To_date::From_str::iso8601" => 0,
"Data::Sah::Coerce::perl::To_date::From_str::natural" => 0,
"Data::Sah::Coerce::perl::To_str::From_str::normalize_perl_modname" => 0,
"Data::Sah::Compiler::perl::TH::array" => 0,
"Data::Sah::Compiler::perl::TH::date" => 0,
"Data::Sah::Compiler::perl::TH::str" => 0,
"DateTime" => 0,
"Finance::QuoteHist" => 0,
"Log::ger" => "0.027",
"PERLANCAR::Module::List" => "0.004004",
"Perinci::CmdLine::Any" => 0,
"Sah::Schema::perl::modname" => 0,
"strict" => 0,
"warnings" => 0
},
"TEST_REQUIRES" => {
"File::Spec" => 0,
Makefile.PL view on Meta::CPAN
"Complete::Module" => 0,
"Data::Sah::Coerce::perl::To_date::From_float::epoch" => 0,
"Data::Sah::Coerce::perl::To_date::From_obj::datetime" => 0,
"Data::Sah::Coerce::perl::To_date::From_obj::time_moment" => 0,
"Data::Sah::Coerce::perl::To_date::From_str::iso8601" => 0,
"Data::Sah::Coerce::perl::To_date::From_str::natural" => 0,
"Data::Sah::Coerce::perl::To_str::From_str::normalize_perl_modname" => 0,
"Data::Sah::Compiler::perl::TH::array" => 0,
"Data::Sah::Compiler::perl::TH::date" => 0,
"Data::Sah::Compiler::perl::TH::str" => 0,
"DateTime" => 0,
"File::Spec" => 0,
"Finance::QuoteHist" => 0,
"IO::Handle" => 0,
"IPC::Open3" => 0,
"Log::ger" => "0.027",
"PERLANCAR::Module::List" => "0.004004",
"Perinci::CmdLine::Any" => 0,
"Sah::Schema::perl::modname" => 0,
"Test::More" => 0,
"strict" => 0,
name=App-finquotehist
[@Author::PERLANCAR]
:version=0.593
[Prereqs]
perl=5.010001
strict=0
warnings=0
Complete::Module=0
DateTime=0
Finance::QuoteHist=0
Log::ger=0.027
Perinci::CmdLine::Any=0
PERLANCAR::Module::List=0.004004
[Prereqs / DevelopX_spec]
-phase=develop
-relationship=x_spec
Rinci=1.1.90
lib/App/finquotehist.pm view on Meta::CPAN
use 5.010001;
use strict;
use warnings;
use Log::ger;
our %SPEC;
my $sch_date = [
'date*', {
'x.perl.coerce_to' => 'DateTime',
'x.perl.coerce_rules' => ['From_str::natural'],
},
];
$SPEC{finquotehist} = {
v => 1.1,
summary => 'Fetch historical stock quotes',
args => {
action => {
schema => 'str*',
lib/App/finquotehist.pm view on Meta::CPAN
if ($action eq 'list_engines') {
require PERLANCAR::Module::List;
my $mods = PERLANCAR::Module::List::list_modules(
"Finance::QuoteHist::", {list_modules=>1, recurse=>1});
return [200, "OK", [
grep {!/\A(Generic)\z/}
map {my $x = $_; $x =~ s/\AFinance::QuoteHist:://; $x}
sort keys %$mods]];
} elsif ($action eq 'fetch_quotes' || $action eq 'fetch_splits' || $action eq 'fetch_dividends') {
require DateTime;
require Finance::QuoteHist;
return [400, "Please specify one or more symbols"]
unless $args{symbols} && @{ $args{symbols} };
my $from = $args{from} // DateTime->today->subtract(years=>1);
my $to = $args{to} // DateTime->today;
my $q = Finance::QuoteHist->new(
lineup => [map {"Finance::QuoteHist::$_"} @{ $args{engines} }],
symbols => $args{symbols},
start_date => $from->strftime("%m/%d/%Y"),
end_date => $to ->strftime("%m/%d/%Y"),
);
my @rows;
my @rows0;
if ($action eq 'fetch_quotes' ) { @rows0 = $q->quotes }
elsif ($action eq 'fetch_splits' ) { @rows0 = $q->splits }
( run in 0.342 second using v1.01-cache-2.11-cpan-05444aca049 )