61 lines
1.7 KiB
Python
61 lines
1.7 KiB
Python
import json
|
|
|
|
from wow_token.db.current import Current
|
|
from wow_token.flavor import Flavor
|
|
|
|
# Current is a global so it's initialized with the Lambda and stays initialized through the lifecycle
|
|
# of that Lambda runner
|
|
|
|
CURRENT_DB = Current()
|
|
|
|
# The URI for the Current function should look like /v2/current/{flavor}
|
|
def flavor_from_path(uri: str) -> Flavor:
|
|
split_uri = uri.split('/')
|
|
if split_uri[-1] == 'classic' or split_uri[-1] == 'classic.json':
|
|
return Flavor.CLASSIC
|
|
if split_uri[-1] == 'retail' or split_uri[-1] == 'retail.json':
|
|
return Flavor.RETAIL
|
|
raise NotImplementedError
|
|
|
|
|
|
def path_handler(uri: str):
|
|
flavor = flavor_from_path(uri)
|
|
return CURRENT_DB.get_current_all(flavor)
|
|
|
|
|
|
def lambda_handler(event, context):
|
|
uri = event['Records'][0]['cf']['request']['uri']
|
|
try:
|
|
data = path_handler(uri)
|
|
response = {
|
|
'status': '200',
|
|
'statusDescription': 'OK',
|
|
'headers': {
|
|
'content-type': [{
|
|
'key': 'Content-Type',
|
|
'value': 'application/json'
|
|
}]
|
|
},
|
|
'body': json.dumps(data)
|
|
}
|
|
return response
|
|
except NotImplementedError:
|
|
return {
|
|
'status': '404',
|
|
'statusDescription': 'Not Found',
|
|
'headers': {
|
|
'content-type': [{
|
|
'key': 'Content-Type',
|
|
'value': 'application/json'
|
|
}]
|
|
},
|
|
'body': json.dumps({'error': 'Not Found'})
|
|
}
|
|
|
|
|
|
def main():
|
|
print(json.dumps(CURRENT_DB.get_current_all(Flavor.RETAIL)))
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main() |