diff --git a/freqtrade/aws/headers.py b/freqtrade/aws/headers.py new file mode 100644 index 000000000..6548d0e8c --- /dev/null +++ b/freqtrade/aws/headers.py @@ -0,0 +1,6 @@ +# Defined the default HTTP headers for function responses + +__HTTP_HEADERS__ = { + 'Access-Control-Allow-Origin' : '*', + 'Access-Control-Allow-Credentials' : True +} \ No newline at end of file diff --git a/freqtrade/aws/strategy.py b/freqtrade/aws/strategy.py index 045f6e25e..43ddb1e77 100644 --- a/freqtrade/aws/strategy.py +++ b/freqtrade/aws/strategy.py @@ -14,6 +14,8 @@ import requests db = boto3.resource('dynamodb') +from freqtrade.aws.headers import __HTTP_HEADERS__ + def names(event, context): """ @@ -42,21 +44,12 @@ def names(event, context): "result": data } return { + "headers": __HTTP_HEADERS__, "statusCode": 200, "body": json.dumps(data) } -def performance(event, context): - """ - returns the performance of the specified strategy - :param event: - :param context: - :return: - """ - pass - - def get(event, context): """ returns the code of the requested strategy, if it's public @@ -83,12 +76,14 @@ def get(event, context): item.pop('content') return { + "headers": __HTTP_HEADERS__, "statusCode": response['ResponseMetadata']['HTTPStatusCode'], "body": json.dumps(item) } else: return { + "headers": __HTTP_HEADERS__, "statusCode": 404, "body": json.dumps(response) } @@ -129,15 +124,18 @@ def code(event, context): if "Items" in response and len(response['Items']) > 0: if response['Items'][0]["public"]: content = urlsafe_b64decode(response['Items'][0]['content']).decode('utf-8') + content["headers"]: __HTTP_HEADERS__ return content else: return { + "headers": __HTTP_HEADERS__, "statusCode": 403, "body": json.dumps({"success": False, "reason": "Denied"}) } else: return { + "headers": __HTTP_HEADERS__, "statusCode": response['ResponseMetadata']['HTTPStatusCode'], "body": json.dumps(response) } @@ -168,6 +166,7 @@ def submit(event, context): result = __evaluate(data) return { + "headers": __HTTP_HEADERS__, "statusCode": result['ResponseMetadata']['HTTPStatusCode'], "body": json.dumps(result) } @@ -271,11 +270,13 @@ def submit_github(event, context): print("error: {}".format(e)) print("imported/updated: {} strategies".format(strategies)) return { + "headers": __HTTP_HEADERS__, "statusCode": 200, "body": json.dumps({"imported": strategies}) } else: return { + "headers": __HTTP_HEADERS__, "statusCode": 404, "body": json.dumps({"error": result}) } diff --git a/freqtrade/aws/trade.py b/freqtrade/aws/trade.py index 1ff9f23c6..15f51375a 100644 --- a/freqtrade/aws/trade.py +++ b/freqtrade/aws/trade.py @@ -6,6 +6,7 @@ import simplejson as json import os from freqtrade.aws.tables import get_trade_table, get_strategy_table from boto3.dynamodb.conditions import Key, Attr +from freqtrade.aws.headers import __HTTP_HEADERS__ def store(event, context): @@ -49,6 +50,7 @@ def submit(event, context): ) return { + "headers": __HTTP_HEADERS__, "statusCode": 200, "body": json.dumps(result) } @@ -85,17 +87,20 @@ def get_aggregated_trades(event, context): # start key ExclusiveStartKey=response['LastEvaluatedKey'] data = { + "headers": __HTTP_HEADERS__, "result": response['Items'], "paginationKey": response.get('LastEvaluatedKey') } return { + "headers": __HTTP_HEADERS__, "statusCode": response['ResponseMetadata']['HTTPStatusCode'], "body": json.dumps(data) } else: return { + "headers": __HTTP_HEADERS__, "statusCode": 404, "body": json.dumps({ "error": "sorry this query did not produce any results", @@ -143,12 +148,14 @@ def get_trades(event, context): } return { + "headers": __HTTP_HEADERS__, "statusCode": response['ResponseMetadata']['HTTPStatusCode'], "body": json.dumps(data) } else: return { + "headers": __HTTP_HEADERS__, "statusCode": 404, "body": json.dumps({ "error": "sorry this query did not produce any results",