Finance-Quote
view release on metacpan or search on metacpan
lib/Finance/Quote/ASX.pm view on Meta::CPAN
### ASX.pm Retrieving data from ASX URL: $url
$response = $ua->get($url);
if (! $response->is_success) {
$status = 0;
$error = "Unable to fetch data from the ASX server '$url'. Status: " . $response->status_line;
### ASX.pm Error: $error
return $status, $error, undef;
}
if ($response->header('content-type') !~ m|application/json|i) {
$status = 0;
$error = "Invalid content-type from ASX server '$url'. Expected: application/json, received: " . $response->header('content-type');
### ASX.pm Error: $error
return $status, $error, undef;
}
$json = $response->content;
# The JSON module will croak on errors, so use eval to trap this.
$data = eval{ decode_json($json) };
if ($@) {
$status = 0;
lib/Finance/Quote/TMX.pm view on Meta::CPAN
my @symbols = @_;
my $ua = $quoter->user_agent();
my %info;
foreach my $symbol (@symbols) {
eval {
my $url = 'https://app-money.tmx.com/graphql';
my $header = ["accept" => "*/*",
"accept-language" => "en-US,en;q=0.9",
"authorization" => "",
"content-type" => "application/json",
"locale" => "en",
"sec-ch-ua" => "\"Google Chrome\";v=\"87\", \" Not;A Brand\";v=\"99\", \"Chromium\";v=\"87\"",
"sec-ch-ua-mobile" => "?0",
"sec-fetch-dest" => "empty",
"sec-fetch-mode" => "cors",
"sec-fetch-site" => "same-site"];
my $body = "{\"operationName\":\"getQuoteBySymbol\",\"variables\":{\"symbol\":\"$symbol\",\"locale\":\"en\"},\"query\":\"query getQuoteBySymbol(\$symbol: String, \$locale: String) {\\n getQuoteBySymbol(symbol: \$symbol, locale: \$locale) {\\n...
my $request = HTTP::Request->new('POST', $url, $header, $body);
( run in 1.534 second using v1.01-cache-2.11-cpan-524268b4103 )