# Plugins/Geoservice

The Geoservice module provides an easy-to-use interface for visitor geolocation and currency information.

## Getting started
### Get visitor geolocation info

**ES6**:
```js
import {plugins} from '@eastsideco/escshopify';

const geoService = new plugins.GeoService;

async function alertVisitorCountry() {
    var geoInfo = await geoService.lookupGeo();
    alert(geoInfo.country.iso_code);
}
```

### Get currency exchange rates
**Note**: It's highly recommended to use the EasyCurrency plugin instead of re-implementing currency conversion yourself - it had more features and covers many easy-to-miss edge cases.

**ES6**:
```js
import {plugins} from '@eastsideco/escshopify';

const geoService = new plugins.GeoService;

class VisitorCurrencyConverter {
    constructor(baseCurrency) {
        this._baseCurrency = basyCurrency;
        this._visitorCurrency = 'USD';
        this._rates = null

        this._getRates();
        this._getVisitorCurrency();
    }

    async _getVisitorCurrency() {
        var geoInfo = await geoService.lookupGeo();
        this._visitorCurrency = geoInfo.currency;
    }

    async _getRates() {
        var res = await geoService.getCurrencyInfo();
        this._rates = res.rates;
    }

    convert(amount) {
        var baseToUsd = this._baseCurrency == 'USD' ? 1 : this._rates[this._baseCurrency];
        var usdToVisitor = this._visitorCurency == 'USD' ? 1 : this._rates[this._visitorCurrency;

        var rate = usdToVisitor / baseToUsd;
        
        return amount * rate;
    }    
}
```
