App-Chart
view release on metacpan or search on metacpan
lib/App/Chart/DownloadHandler/IndivInfo.pm view on Meta::CPAN
my $recheck_key = $self->{'recheck_key'};
my $timestamp = App::Chart::Download::timestamp_now();
App::Chart::Download::status ($self->{'name'}, $symbol);
my $url = $self->{'url_func'}->($symbol);
my $resp = App::Chart::Download->get ($url, allow_404 => 1);
my $h;
if ($resp->is_success) {
$h = $self->{'parse'}->($symbol, $resp);
} else {
$h = {};
}
my $changed = 0;
App::Chart::Database::call_with_transaction
($dbh, sub {
if (exists $h->{'name'}) {
App::Chart::Download::set_symbol_name ($symbol, $h->{'name'});
$changed = 1;
}
if (exists $h->{'currency'}) {
App::Chart::Download::set_currency ($symbol, $h->{'currency'});
$changed = 1;
}
App::Chart::Database->write_extra
($symbol, $recheck_key, $timestamp);
});
if ($changed) {
App::Chart::chart_dirbroadcast()->send ('data-changed', { $symbol => 1 });
}
}
1;
__END__
# =head1 NAME
#
# App::Chart::DownloadHandler::IndivInfo -- individual symbols info
#
# =for test_synopsis my ($pred)
#
# =head1 SYNOPSIS
#
# use App::Chart::DownloadHandler::IndivInfo;
# App::Chart::DownloadHandler::IndivInfo->new
# (name => __('FooEX'),
# pred => $pred,
# url_func => \&my_url,
# parse => \&my_info_parser,
# key => 'Foo-info',
# recheck_days => 10);
#
# =head1 DESCRIPTION
#
# This module downloads and processes information for a given symbol,
# such as the name. Info is re-checked at intervals of a given
# number of days.
#
# This is for use when information is a separate download for each
# symbol (rather than say a single big download of many symbols).
#
# C<url_func> is a function which returns a URL (a string),
#
# sub my_url {
# my ($symbol) = @_;
# return "http://example.com/info/$symbol";
# }
#
# C<parse> is a function which returns a C<write_daily_group()> style
# hashref,
#
# sub my_info_parse {
# my ($symbol, $resp) = @_;
# my $h = { ... };
# return $h;
# }
#
# =head1 SEE ALSO
#
# L<App::Chart::DownloadHandler>,
# L<App::Chart::DownloadHandler::IndivChunks>
#
# =cut
( run in 0.557 second using v1.01-cache-2.11-cpan-d7a12ab2c7f )