Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 14 additions & 12 deletions marketstack.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,9 @@ def prep_args(args:dict, only_keys:List[str] =None):
return {key: value for key, value in args.items() if key not in ARG_EXCEPTIONS}

class MarketStack:
def __init__(self, endpoint: str, symbols: Optional[str] = None, exchange: Optional[str] = None, sort: Optional[str] = None, date_from: Optional[str] = None, date_to: Optional[str] = None, limit: Optional[str] = None, offset: Optional[str] = None, search: Optional[str] = None):
self.base_url = "http://api.marketstack.com/v1/"
self.url = f"http://api.marketstack.com/v1/{self.validate_endpoint(endpoint)}"
def __init__(self, interval: Optional[str], endpoint: str, symbols: Optional[str] = None, exchange: Optional[str] = None, sort: Optional[str] = None, date_from: Optional[str] = None, date_to: Optional[str] = None, limit: Optional[int] = None, offset: Optional[str] = None, search: Optional[str] = None):
self.base_url = "http://api.marketstack.com/v2/"
self.url = f"http://api.marketstack.com/v2/{self.validate_endpoint(endpoint)}"
self.endpoint = endpoint
#define parameters for API call. Making sure the API Key is always included.
self.params = {
Expand All @@ -63,6 +63,8 @@ def __init__(self, endpoint: str, symbols: Optional[str] = None, exchange: Optio

if symbols:
self.params['symbols'] = symbols
if interval:
self.params['interval'] = interval
if exchange:
self.params['exchange'] = exchange
if sort:
Expand Down Expand Up @@ -208,37 +210,37 @@ def get_data_df(self):
class EndOfDay(MarketStack):
def __init__(self, symbols: str, exchange: Optional[str] = None, sort: Optional[str] = None, date_from: Optional[str] = None, date_to: Optional[str] = None, limit: Optional[str] = None, offset: Optional[str] = None):
args = prep_args(locals())
super().__init__('eod', **args)
super().__init__(interval=None, endpoint='eod', **args)

class Intraday(MarketStack):
def __init__(self, symbols: str, exchange: Optional[str] = None, sort: Optional[str] = None, date_from: Optional[str] = None, date_to: Optional[str] = None, limit: Optional[str] = None, offset: Optional[str] = None):
def __init__(self, symbols: str, interval: Optional[str], exchange: Optional[str] = None, sort: Optional[str] = None, date_from: Optional[str] = None, date_to: Optional[str] = None, limit: Optional[str] = None, offset: Optional[str] = None):
args = prep_args(locals())
super().__init__('intraday', **args)
super().__init__(endpoint='intraday', **args)

class Splits(MarketStack):
def __init__(self, symbols: str, sort: Optional[str] = None, date_from: Optional[str] = None, date_to: Optional[str] = None, limit: Optional[str] = None, offset: Optional[str] = None):
args = prep_args(locals())
super().__init__('splits', **args)
super().__init__(interval=None, endpoint='splits', **args)

class Dividends(MarketStack):
def __init__(self, symbols: str, sort: Optional[str] = None, date_from: Optional[str] = None, date_to: Optional[str] = None, limit: Optional[str] = None, offset: Optional[str] = None):
args = prep_args(locals())
super().__init__('dividends', **args)
super().__init__(interval=None, endpoint='dividends', **args)

class Currencies(MarketStack):
def __init__(self, limit: Optional[int] = None, offset: Optional[int] = None):
args = prep_args(locals())
super().__init__('currencies', **args)
super().__init__(interval=None, endpoint='currencies', **args)

class TimeZones(MarketStack):
def __init__(self, limit: Optional[int] = None, offset: Optional[int] = None):
args = prep_args(locals())
super().__init__('timezones', **args)
super().__init__(interval=None, endpoint='timezones', **args)

class Tickers(MarketStack):
def __init__(self, get_symbol: Optional[str] = None, exchange: Optional[str] = None, search: Optional[str] = None, limit: Optional[int] = None, offset: Optional[int] = None, get_splits: bool = False, get_dividends: bool = False, get_eod: bool = False, get_intraday: bool = False, date: Optional[str] = None, get_latest: bool = False):
args = prep_args(locals(), only_keys=['exchange', 'search', 'limit', 'offset'])
super().__init__('tickers', **args)
super().__init__(interval=None, endpoint='tickers', **args)


self.get_symbol = get_symbol
Expand Down Expand Up @@ -338,7 +340,7 @@ def build_url(self):
class Exchanges(MarketStack):
def __init__(self, search: Optional[str] = None, limit: Optional[int] = None, offset: Optional[int] = None, mic: Optional[str] = None, get_tickers: Optional[bool] = False, get_eod: Optional[bool] = False, get_intraday: Optional[bool] = False, date: Optional[str] = None, get_latest: Optional[bool] = False):
args = prep_args(locals(), only_keys=['search', 'limit', 'offset'])
super().__init__('exchanges', **args)
super().__init__(interval=None, endpoint='exchanges', **args)

self.mic = mic
self.get_tickers = get_tickers
Expand Down