2024-11-03 01:10:49 +00:00
|
|
|
"""
|
|
|
|
|
|
|
|
Description: A simple script to query the NHL API and generate simple
|
|
|
|
documentation
|
|
|
|
|
|
|
|
License: MIT, see LICENSE file for more details
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
2024-11-03 00:52:31 +00:00
|
|
|
import requests
|
|
|
|
import xmltodict
|
|
|
|
import json
|
|
|
|
|
2024-11-03 01:10:49 +00:00
|
|
|
__author__ = 'Drew Hynes'
|
|
|
|
__copyright__ = 'Copyright 2024, NHL API Documentation'
|
|
|
|
__credits__ = ['Kevin Sidwar','Jon Ursenbach']
|
|
|
|
__license__ = 'MIT'
|
|
|
|
__version__ = '0.0.1'
|
|
|
|
__maintainer__ = 'Drew Hynes'
|
|
|
|
__email__ = 'drew.hynes@gmail.com'
|
|
|
|
__status__ = 'Alpha'
|
|
|
|
|
2024-11-03 00:52:31 +00:00
|
|
|
url = "https://api-web.nhle.com/application.wadl?detail=true"
|
|
|
|
attributes = [
|
|
|
|
"@path",
|
|
|
|
"@base",
|
|
|
|
"@href",
|
|
|
|
"@id",
|
|
|
|
"@itsn",
|
|
|
|
"@jersey",
|
|
|
|
"@mediaType",
|
|
|
|
"@name",
|
|
|
|
"@path",
|
|
|
|
"@style",
|
|
|
|
"@title",
|
|
|
|
"@type",
|
|
|
|
"@xml",
|
|
|
|
"@xmlns"
|
|
|
|
]
|
|
|
|
|
|
|
|
def remove_at_symbols(data):
|
|
|
|
if isinstance(data, dict):
|
|
|
|
# Process each key-value pair in the dictionary
|
|
|
|
new_data = {}
|
|
|
|
for key, value in data.items():
|
|
|
|
# Remove @ symbol from the key
|
|
|
|
new_key = key.lstrip('@')
|
|
|
|
new_data[new_key] = remove_at_symbols(value)
|
|
|
|
return new_data
|
|
|
|
elif isinstance(data, list):
|
|
|
|
# Process each item in the list
|
|
|
|
return [remove_at_symbols(item) for item in data]
|
|
|
|
else:
|
|
|
|
# Return data as-is if it's not a dict or list
|
|
|
|
return data
|
|
|
|
|
|
|
|
reps = []
|
|
|
|
for a in attributes:
|
|
|
|
line_item = {"target":f"{a}", "new":f"{a[1:]}"}
|
|
|
|
reps.append(line_item)
|
|
|
|
|
|
|
|
res_plain = requests.get(url)
|
|
|
|
res_cleaned = res_plain.text.replace("@", "")
|
|
|
|
|
|
|
|
for l in reps:
|
|
|
|
res_cleaned = res_cleaned.replace(f'{l["target"]}', f'{l["new"]}')
|
|
|
|
|
|
|
|
new_json = xmltodict.parse(res_cleaned)
|
|
|
|
cleaned = remove_at_symbols(new_json)
|
|
|
|
|
|
|
|
i = 0
|
|
|
|
for line in cleaned['application']['resources']['resource']:
|
|
|
|
for item in line:
|
|
|
|
if item == "path":
|
|
|
|
print(f"{i}: {line['path']}")
|
|
|
|
elif item == "resource" and isinstance(line[item], list):
|
|
|
|
print(f"{item}")
|
|
|
|
for sub_item in line[item]:
|
|
|
|
print(f"\t{sub_item['path']}")
|
|
|
|
print(f"\tExample: {line['path']}/{sub_item['path']}\n")
|
|
|
|
else:
|
|
|
|
print(f"{item}")
|
|
|
|
print("\n++++++++++++++++++\n")
|
|
|
|
i += 1
|
|
|
|
|