Heray-Was-Here
Server : Apache
System : Linux vps103298.mylogin.co 4.18.0-513.11.1.el8_9.x86_64 #1 SMP Wed Jan 17 02:00:40 EST 2024 x86_64
User : calvet ( 273824)
PHP Version : 7.4.33
Disable Function : NONE
Directory :  /proc/self/root/proc/thread-self/root/usr/share/perl5/vendor_perl/Finance/Quote/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //proc/self/root/proc/thread-self/root/usr/share/perl5/vendor_perl/Finance/Quote/Oslobors.pm
package Finance::Quote::Oslobors;

use strict;
use JSON qw( decode_json );
use HTTP::Request::Common;

our $VERSION = '1.52'; # VERSION

use vars qw( $OSLOBORS_COMPONENTS_URL );

$OSLOBORS_COMPONENTS_URL = "https://www.oslobors.no/ob/servlets/components?type=table&source=feed.omff.FUNDS&view=REALTIME&columns=ITEM%2C+PRICECHANGEPCT%2C+PRICE%2C+DATE%2C+QUOTATIONCURRENCY&filter=ITEM_SECTOR%3D%3Ds";

sub methods { return (oslobors => \&oslobors); }

{
  my @labels = qw/date isodate method source currency price p_change/;
  sub labels { return (oslobors => \@labels); }
}

sub oslobors {
  my $quoter = shift;
  my @symbols = @_;
  my %funds;

  my $ua = $quoter->user_agent;

  my ($url, $reply, $data);

  foreach my $symbol (@symbols) {
    $url = $OSLOBORS_COMPONENTS_URL . $symbol;
    $reply = $ua->request(GET $url);
    unless($reply->is_success) {
      $funds{$symbol, "success"} = 0;
      $funds{$symbol, "errormsg"} = "HTTP request failed";
    } else {
      $data = JSON::decode_json($reply->content)->{"rows"}[0]{"values"};

      $quoter->store_date(\%funds, $symbol, { isodate => sprintf("%s-%s-%s", $data->{"DATE"} =~ /(\d\d\d\d)(\d\d)(\d\d)/)});
      $funds{$symbol, 'method'}   = 'oslobors';
      $funds{$symbol, 'currency'} = $data->{"QUOTATIONCURRENCY"};
      $funds{$symbol, 'success' } = 1;
      $funds{$symbol, 'price'   } = $data->{"PRICE"};
      $funds{$symbol, 'source'  } = 'Finance::Quote::Oslobors';
      $funds{$symbol, 'symbol'  } = $symbol;
      $funds{$symbol, 'p_change'} = $data->{"PRICECHANGEPCT"};
    }
  }

  return wantarray() ? %funds : \%funds;
}

1;

=head1 NAME

Finance::Quote::Oslobors - Obtain fund quotes from Oslo stock exchange

=head1 SYNOPSIS

    use Finance::Quote;
    $q = Finance::Quote->new;
    %fundinfo = $q->fetch("oslobors","FUND-TICKER.OSE");

=head1 DESCRIPTION

This module obtains information about mutual fund prices from
www.oslobors.no.

=head1 FUND TICKER SYMBOLS

The fund ticker symbols can be found by searching for the fund,
and visit its page. The symbol will be visible in the URL, for
instance OD-HORIA.OSE. The .OSE part is necessary.

The package does not understand Oslo stock symbols.

=head1 LABELS RETURNED

The module returns date, method, source, currency, price and p_change.
The prices are updated on bank days.

=head1 SEE ALSO

Finance::Quote

=cut

Hry