diff --git a/modules/src/__init__.py b/modules/src/__init__.py index 4813f885..2e941283 100644 --- a/modules/src/__init__.py +++ b/modules/src/__init__.py @@ -1,5 +1,6 @@ __all__ = [ 'book', + 'currency', 'dictionary', 'hello', 'help', diff --git a/modules/src/currency.py b/modules/src/currency.py new file mode 100644 index 00000000..07f0a7a9 --- /dev/null +++ b/modules/src/currency.py @@ -0,0 +1,22 @@ +import requests + +def process(input, entities=None): + output = {} + try: + from_currency = entities['from_currency'][0]['value'].upper() + to_currency = entities['to_currency'][0]['value'].upper() + amount = float(entities['number'][0]['value']) + + r = requests.get('http://api.fixer.io/latest?base=' + from_currency) + data = r.json() + conversion_rate = float(data['rates'][to_currency]) + + conversion_details = '1 %s = %.4f %s' % (from_currency, conversion_rate, to_currency) + amount_conversion = '%s %s = %.4f %s' % (amount, from_currency, conversion_rate*amount, to_currency) + + output['input'] = input + output['output'] = conversion_details + '
' + amount_conversion + output['success'] = True + except: + output['success'] = False + return output diff --git a/modules/tests/test_currency.py b/modules/tests/test_currency.py new file mode 100644 index 00000000..9d1dd952 --- /dev/null +++ b/modules/tests/test_currency.py @@ -0,0 +1,23 @@ +import modules + +def test_currency(): + + assert('currency' == modules.process_query('HKD to USD')[0]) + assert('currency' == modules.process_query('USD to INR')[0]) + assert('currency' == modules.process_query('how much is USD in EUR')[0]) + assert('currency' != modules.process_query('something random')[0]) + + assert('currency' == modules.process_query('convert 100 USD to INR')[0]) + assert('currency' == modules.process_query('how much is 50 USD in EUR')[0]) + + intent, entities = modules.process_query('convert 5 HKD to USD') + assert('currency' == intent) + assert('HKD' == entities['from_currency'][0]['value']) + assert('USD' == entities['to_currency'][0]['value']) + assert(5 == entities['number'][0]['value']) + + intent, entities = modules.process_query('how much is 100 USD to INR') + assert('currency' == intent) + assert('USD' == entities['from_currency'][0]['value']) + assert('INR' == entities['to_currency'][0]['value']) + assert(100 == entities['number'][0]['value'])