App-finquotehist

 view release on metacpan or  search on metacpan

META.json  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",
            "perl" : "5.010001",
            "strict" : "0",
            "warnings" : "0"
         }
      },

META.yml  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'
  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,

dist.ini  view on Meta::CPAN

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 )