New Canadian source for price quotes
James A. Treacy
treacy@debian.org
Thu, 21 Jun 2001 15:25:40 -0400
I was unable to find any of the TD Waterhouse managed funds using the
existing sources, so I have created a new one for inclusion in
gnucash. It looks like the files
src/gnc-ui-util.c src/gnc-ui-util.h
src/quotes/finance-quote-helper.in src/scm/price-quotes.scm:
also need to be modified.
########## begin /usr/lib/perl5/Finance/Quote/Tdwaterhouse.pm ########
#!/usr/bin/perl -w
#
# Copyright (C) 1998, Dj Padzensky <djpadz@padz.net>
# Copyright (C) 1998, 1999 Linas Vepstas <linas@linas.org>
# Copyright (C) 2000, Yannick LE NY <y-le-ny@ifrance.com>
# Copyright (C) 2000, Paul Fenwick <pjf@cpan.org>
# Copyright (C) 2000, Brent Neal <brentn@users.sourceforge.net>
# Copyright (C) 2001, James Treacy <treacy@debian.org>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA
#
package Finance::Quote::Tdwaterhouse;
require 5.005;
use strict;
use vars qw($VERSION $TD_URL);
use LWP::UserAgent;
use HTTP::Request::Common;
use Carp;
$VERSION = '1.00';
# URLs of where to obtain information.
#$TD_URL = ("http://tdfunds.tdam.com/tden/FundProfile/FundProfile.cfm");
$TD_URL = ("http://tdfunds.tdam.com/tden/Download/v_DownloadProcess.cfm?SortField=FundName&SortOrder=ASC&Nav=No&Group=99&WhereClause=Where%20FC%2EFund%5FClass%5FORDER%20%3C%2099%20and%20TD%2ERisk%5FCat%5FID%20%21%3D%204&DownloadType=CSV");
sub methods { return (tdwaterhouse => \&tdwaterhouse); }
sub labels { return (tdwaterhouse => [qw/method exchange name nav date price/]); }
# =======================================================================
sub tdwaterhouse
{
my $quoter = shift;
my(@q,%aa,$ua,$url,$sym,$price);
$url = $TD_URL;
$ua = $quoter->user_agent;
my $reply = $ua->request(GET $url);
return unless ($reply->is_success);
foreach (split('\015?\012',$reply->content))
{
@q = $quoter->parse_csv($_);
($sym = $q[1]) =~ s/^ +//;
if ($sym) {
$aa {$sym, "exchange"} = "TD Waterhouse"; # TRP
$aa {$sym, "method"} = "tdwaterhouse";
$aa {$sym, "name"} = $sym;
$price = $q[3];
$price =~ s/\$//;
$aa {$sym, "nav"} = $price;
$aa {$sym, "date"} = $q[2];
$aa {$sym, "price"} = $aa{$sym,"nav"};
$aa {$sym, "success"} = 1;
$aa {$sym, "currency"} = $q[4];
} else {
$aa {$sym, "success"} = 0;
$aa {$sym, "errormsg"} = "Stock lookup failed.";
}
}
return %aa if wantarray;
return \%aa;
}
1;
=head1 NAME
Finance::Quote::Tdwaterhouse - Obtain quotes from TD Waterhouse Canada
=head1 SYNOPSIS
use Finance::Quote;
$q = Finance::Quote->new;
%quotes = $q->tdwaterhouse ("TD AmeriGrowth RSP");
$date = $quotes {"TD AmeriGrowth RSP", "date"};
$nav = $quotes {"TD AmeriGrowth RSP", "nav"};
print "TD AmeriGrowth RSP for $date: NAV = $nav\n";
$nav = $quotes {"TD AmeriGrowth RSP", "nav"};
=head1 DESCRIPTION
This module obtains information about managed funds from TD Waterhouse Canada.
All TD Waterhouse funds are downloaded at once.
=head1 LABELS RETURNED
Information available from TD Waterhouse may include the following
labels: exchange, name, nav, date, price, currency.
=head1 SEE ALSO
TD Waterhouse website - http://www.tdwaterhouse.ca/
=cut
########## end /usr/lib/perl5/Finance/Quote/Tdwaterhouse.pm ########
--
James (Jay) Treacy
treacy@debian.org