]> wagnertech.de Git - mfinanz.git/blob - SL/BackgroundJob/UpdateExchangerates/FromOpenexchangerates.pm
restart apache2 in postinst
[mfinanz.git] / SL / BackgroundJob / UpdateExchangerates / FromOpenexchangerates.pm
1 package SL::BackgroundJob::UpdateExchangerates::FromOpenexchangerates;
2
3 use strict;
4 use utf8;
5
6 use parent qw(SL::BackgroundJob::UpdateExchangerates::Base);
7
8 use LWP::Simple;
9 use SL::JSON;
10
11
12 sub update_rates {
13   my ($self, $rates) = @_;
14
15   return if !$self->options->{api_id};
16
17   # 'https://openexchangerates.org/api/latest.json?app_id=xxx&base=EUR';
18   # setting base does not work for me, so get for default base USD and calculate ...
19   my $url;
20   $url .= 'https://openexchangerates.org/api/latest.json?app_id=';
21   $url .= $self->options->{api_id};
22
23   my $result = get($url);
24   return if !$result;
25   my $result_h = decode_json($result);
26
27   foreach my $rate (@$rates) {
28     my $base_rate = $result_h->{rates}->{ $self->translate_currency_name($rate->{from}->name) };
29     next if !$base_rate;
30
31     my $target_rate = $result_h->{rates}->{ $self->translate_currency_name($rate->{to}->name) };
32     next if !$target_rate;
33
34     my $exrate = $base_rate/$target_rate;
35
36     # buy and sell are the same, so do not differenciate
37     $rate->{rate} = $exrate;
38   }
39 }
40
41
42 1;
43
44
45 #module: FromOpenexchangerates
46 #options:
47 #  api_id: ce3e48c3f3a54c4d968530a08bb87734