uktrade/directory-api-client

View on GitHub
directory_api_client/dataservices.py

Summary

Maintainability
A
0 mins
Test Coverage
from directory_api_client.base import AbstractAPIClient

url_markets = 'dataservices/markets/'
url_country_data_by_country = 'dataservices/country-data/'
url_cia_world_factbook_data = 'dataservices/cia-factbook-data/'
url_society_data_by_country = 'dataservices/society-data-by-country/'
url_last_year_import_data_by_country = 'dataservices/lastyearimportdatabycountry/'
url_suggested_countries = '/dataservices/suggested-countries/'
url_trading_blocs_by_country = '/dataservices/trading-blocs/'
url_trade_barriers = '/dataservices/trade-barriers/'
url_market_trends = '/dataservices/uk-market-trends/'
url_trade_highlights = '/dataservices/uk-trade-highlights/'
url_commodity_exports_data_by_country = '/dataservices/commodity-exports-data-by-country/'
url_top_five_services = '/dataservices/top-five-services/'
url_top_five_goods = '/dataservices/top-five-goods/'
url_economic_highlights = '/dataservices/economic-highlights/'
url_uk_free_trade_agreements = '/dataservices/uk-free-trade-agreements/'
url_business_cluster_information_by_sic = 'dataservices/business-cluster-information-by-sic/'
url_business_cluster_information_by_dbt_sector = 'dataservices/business-cluster-information-by-dbt-sector/'


class DataServicesAPIClient(AbstractAPIClient):
    def get_markets_data(self):
        return self.get(url=url_markets)

    def get_country_data_by_country(self, countries, fields):
        return self.get(url=url_country_data_by_country, params={'countries': countries, 'fields': fields})

    def get_cia_world_factbook_data(self, country, data_key):
        return self.get(
            url=url_cia_world_factbook_data, params={'country': country, 'data_key': data_key}, use_fallback_cache=True
        )

    def get_society_data_by_country(self, countries: list):
        return self.get(url=url_society_data_by_country, params={'countries': countries}, use_fallback_cache=True)

    def get_last_year_import_data_by_country(self, commodity_code, countries: list):
        return self.get(
            url=url_last_year_import_data_by_country, params={'commodity_code': commodity_code, 'countries': countries}
        )

    def suggested_countries_by_hs_code(self, hs_code):
        return self.get(
            url=url_suggested_countries,
            params={
                'hs_code': hs_code,
            },
        )

    def trading_blocs_by_country(self, iso2):
        return self.get(
            url=url_trading_blocs_by_country,
            params={
                'iso2': iso2,
            },
        )

    def get_trade_barriers(self, sectors: list, countries: list):
        return self.get(url=url_trade_barriers, params={'sectors': sectors, 'countries': countries})

    def get_market_trends_by_country(self, iso2, from_year=None):
        params = {'iso2': iso2}
        if from_year:
            params['from_year'] = from_year

        return self.get(
            url=url_market_trends,
            params=params,
        )

    def get_trade_highlights_by_country(self, iso2):
        params = {'iso2': iso2}

        return self.get(
            url=url_trade_highlights,
            params=params,
        )

    def get_commodity_exports_data_by_country(self, iso2):
        return self.get(
            url=url_commodity_exports_data_by_country,
            params={'iso2': iso2},
        )

    def get_top_five_services_by_country(self, iso2):
        return self.get(url=url_top_five_services, params={'iso2': iso2})

    def get_top_five_goods_by_country(self, iso2):
        return self.get(url=url_top_five_goods, params={'iso2': iso2})

    def get_economic_highlights_by_country(self, iso2):
        return self.get(url=url_economic_highlights, params={'iso2': iso2})

    def list_uk_free_trade_agreements(self):
        return self.get(url=url_uk_free_trade_agreements)

    def get_business_cluster_information_by_sic(self, sic_code, geo_code=None):
        params = {'sic_code': sic_code}
        if geo_code:
            params['geo_code'] = geo_code

        return self.get(
            url=url_business_cluster_information_by_sic,
            params=params,
        )

    def get_business_cluster_information_by_dbt_sector(self, dbt_sector_name, geo_code=None):
        params = {'dbt_sector_name': dbt_sector_name}
        if geo_code:
            params['geo_code'] = geo_code

        return self.get(
            url=url_business_cluster_information_by_dbt_sector,
            params=params,
        )