1 package SL::BackgroundJob::UpdateExchangerates::FromOpenexchangerates;
6 use parent qw(SL::BackgroundJob::UpdateExchangerates::Base);
13 my ($self, $rates) = @_;
15 return if !$self->options->{api_id};
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 ...
20 $url .= 'https://openexchangerates.org/api/latest.json?app_id=';
21 $url .= $self->options->{api_id};
23 my $result = get($url);
25 my $result_h = decode_json($result);
27 foreach my $rate (@$rates) {
28 my $base_rate = $result_h->{rates}->{ $self->translate_currency_name($rate->{from}->name) };
31 my $target_rate = $result_h->{rates}->{ $self->translate_currency_name($rate->{to}->name) };
32 next if !$target_rate;
34 my $exrate = $base_rate/$target_rate;
36 # buy and sell are the same, so do not differenciate
37 $rate->{rate} = $exrate;
45 #module: FromOpenexchangerates
47 # api_id: ce3e48c3f3a54c4d968530a08bb87734