Source code for ritpytrading.assets
'''
This script contains results for the /assets module
Sample JSON output formats for the function returns
News object return value: JSON formatted
[
{
"ticker": "string",
"type": "CONTAINER",
"description": "string",
"total_quantity": 0,
"available_quantity": 0,
"lease_price": 0,
"convert_from": [
{
"ticker": "string",
"quantity": 0
}
],
"convert_to": [
{
"ticker": "string",
"quantity": 0
}
],
"containment": {
"ticker": "string",
"quantity": 0
},
"ticks_per_conversion": 0,
"ticks_per_lease": 0,
"is_available": true,
"start_period": 0,
"stop_period": 0
}
]
Parameters for the news GET HTTP request
- ticker string (query)
'''
# Make sure the RIT client uses the same 9999 port
host_url = 'http://localhost:9999'
base_path = '/v1'
base_url = host_url + base_path
[docs]class ApiException(Exception):
""" to print error messages and stop the program when needed """
pass
[docs]class Asset():
""" case_response is a json obj returned from the API get request """
def __init__(self, asset_response):
self.ticker = asset_response["ticker"]
self.type = asset_response["type"]
self.description = asset_response["description"]
self.total_quantity = asset_response["total_quantity"]
self.available_quantity = asset_response["available_quantity"]
self.lease_price = asset_response["lease_price"]
self.convert_from = asset_response["convert_from"]
self.convert_to = asset_response["convert_to"]
self.containment = asset_response["containment"]
self.ticks_per_conversion = asset_response["ticks_per_conversion"]
self.ticks_per_lease = asset_response["ticks_per_lease"]
self.is_available = asset_response["is_available"]
self.start_period = asset_response["start_period"]
self.stop_period = asset_response["stop_period"]
def __repr__(self):
return self.ticker + ' ' + self.type + ' Asset'
def __eq__(self, other):
return self.__dict__ == other.__dict__
def _get_assets_json(ses, ticker=None):
""" function requires a requests.Session() object
as the ses argument with a loaded API_KEY
ticker = ticker sumbol
returns a JSON obj with params given at the top
"""
payload = {}
if ticker is not None:
payload = {'ticker': ticker}
response = ses.get(base_url + "/assets", params=payload)
if response.ok:
assets_json = response.json()
return assets_json
raise ApiException('Authorization Error: Please check API key.')
def _assets_response_handle(assets_json, ticker=None):
# if no ticker is given, return a dict of asset objects
if ticker is None:
assets_dict = {Asset(asset_obj).ticker: Asset(asset_obj)
for asset_obj in assets_json}
# if ticker sumbol is given
elif ticker is not None:
assets_dict = Asset(assets_json[0])
return assets_dict
[docs]def asset(ses, ticker_sym):
""" function that returns a single asset object given for a given ticker
"""
return _assets_response_handle(_get_assets_json(
ses, ticker=ticker_sym), ticker=ticker_sym)
[docs]def assets_dict(ses):
""" function that returns a dictionary of the assets object """
return _assets_response_handle(_get_assets_json(ses))
[docs]def assets_list(ses):
""" returns a list of JSON fomratted output for assets object """
return _get_assets_json(ses)