Source code for footballdata.connector

"""
    footballdata.connector
    ~~~~~~~~~~~~~~~~~~~~~~

    This module contains utilities to connect to API.

    :copyright: (c) 2018 Tony Joseph
    :license: BSD 3-Clause
"""

from .datasets import DataSet, Competition, Fixture


[docs]class Connector: """Class to initialise connection to football-data.org""" __supported_api_versions = ['v1'] def __init__(self, api_key='', api_version='v1'): """Initialises connection to football-data.org :param api_key: API key from football-data.org, optional :param api_version: API version, defaults to v1 :return: Connector object """ # Check if API version is supported if api_version not in self.__supported_api_versions: raise NotImplementedError('This API version is not supported') self.__api_key = api_key self.__api_version = api_version # Build base url with API version self.base_url = "http://api.football-data.org/{api_version}/".format(api_version=api_version) # Build other endpoint urls self.competition_endpoint = "{base_url}competitions/".format(base_url=self.base_url) self.fixtures_endpoint = "{base_url}fixtures/".format(base_url=self.base_url) # Initialise competitions and fixtures self.__competitions = [] self.__fixtures = []
[docs] @classmethod def supported_api_versions(cls): """Returns the supported api versions as list""" return cls.__supported_api_versions
@property def api_key(self): """Returns API key given at the time of initiating the object :return: str - API key """ return self.__api_key @property def api_version(self): """Returns API version given at the time of initiating the object :return: str - API version """ return self.__api_version
[docs] def get_competitions(self, season='', force_update=False): """Fetches all competitions :param force_update: Boolean, overrides cached results if True :param season: 4 digit integer representing a season, optional :return: DataSet of Competition objects """ if force_update or not self.__competitions: options = {'season': season} if season else None self.__competitions = DataSet(klass=Competition, endpoint=self.competition_endpoint, api_key=self.__api_key, options=options) return self.__competitions
[docs] def get_fixtures(self, force_update=False): """Fetches all fixtures :param force_update: Boolean, overrides cached results if True :return: DataSet of Fixture objects """ if force_update or not self.__fixtures: self.__fixtures = DataSet(klass=Fixture, endpoint=self.fixtures_endpoint, api_key=self.__api_key) return self.__fixtures