Passed
Push — master ( feb4f1...edc43c )
by Greg
02:12
created

Money   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 41
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
dl 0
loc 41
rs 10
c 0
b 0
f 0
wmc 6

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A getConvRate() 0 19 3
A getConvUrl() 0 4 1
A convertAmount() 0 3 1
1
<?php
2
namespace GJClasses;
3
4
class Money
5
{
6
    public $log;
7
8
    public function __construct()
9
    {
10
        $this->log = new Log('class.money');
11
    }
12
13
    public function convertAmount($amount, $from_currency, $to_currency)
14
    {
15
        return $this->getConvRate($from_currency, $to_currency) * $amount;
16
    }
17
18
    public function getConvRate($from_currency, $to_currency)
19
    {
20
        list($currency_slug, $full_url) = $this->getConvUrl($from_currency, $to_currency);
21
        $remote = new Remote();
22
        $result = $remote->getFileContents('Currency Conversion', 'error', $full_url);
23
        $json_result = json_decode($result);
24
        $conversion_rate = $json_result->{$currency_slug}->val;
25
26
        if (!is_null($conversion_rate) && $conversion_rate != '') {
27
28
            return $conversion_rate;
29
30
        } else {
31
32
            $log_message = 'Unable to retrieve Currency Converter API (FREE) currency conversion';
33
            $log_extra = array('From Currency' => $from_currency, 'To Currency' => $to_currency,
34
                               'Conversion Rate Result' => $conversion_rate);
35
            $this->log->critical($log_message, $log_extra);
36
            return $log_message;
37
38
        }
39
    }
40
41
    public function getConvUrl($from_currency, $to_currency)
42
    {
43
        $currency_slug = $from_currency . '_' . $to_currency;
44
        return array($currency_slug, 'https://free.currencyconverterapi.com/api/v5/convert?q=' . $currency_slug . '&compact=y');
45
    }
46
}
47