From 98266a1b7d5a86b9261471b7e2033634978bfb75 Mon Sep 17 00:00:00 2001 From: Cristiano Hoshikawa Date: Thu, 15 Feb 2024 21:35:27 -0300 Subject: [PATCH] New Release. This version can import JSON or YAML API format (OpenAPI or Swagger) --- files/OCI_API_Gateway_Automation_files.zip | Bin 26286 -> 26636 bytes files/applyValidationApi/func.py | 64 +++++++++++++++++---- files/createapi/func.py | 17 ++++-- 3 files changed, 64 insertions(+), 17 deletions(-) diff --git a/files/OCI_API_Gateway_Automation_files.zip b/files/OCI_API_Gateway_Automation_files.zip index 1ada8d99dfe3a80c10e5a42847824709cac05b10..90eb8f24ffd53a084d083cc2a0188f951e387754 100644 GIT binary patch delta 8774 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 Mg9Uo0`E&CA52*?|umAu6 diff --git a/files/applyValidationApi/func.py b/files/applyValidationApi/func.py index ace5aac..a955302 100644 --- a/files/applyValidationApi/func.py +++ b/files/applyValidationApi/func.py @@ -7,6 +7,7 @@ import requests import time from itertools import groupby import yaml +import datetime #### IDCS Routines #### https://docs.oracle.com/en/learn/apigw-modeldeployment/index.html#introduction @@ -131,7 +132,7 @@ def applyAuthApi(compartmentId, displayName, payload, functionId, host, api_gate if (item["SCHEMA_BODY_VALIDATION"] != ""): callback_url = ("https://" + host + item["PATH_PREFIX"] + "validation-callback" + item["PATH"]).replace("{", "${request.path[").replace("}", "]}") put_logs_response = logging.put_logs( - log_id="ocid1.log.oc1.iad.amaaaaaanamaaaaaanamaaaaaanamaaaaaanamaaaaaanamaaaaaanamaaaaaan", + log_id="ocid1.log.oc1.iad.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", put_logs_details=oci.loggingingestion.models.PutLogsDetails( specversion="EXAMPLE-specversion-Value", log_entry_batches=[ @@ -293,7 +294,8 @@ def accMethods(routes, path, status): for spec in routes: if (find_path(spec["path"]) == path and spec["backend"]["status"] == status): for method in spec["methods"]: - METHOD = (METHOD + " " + method).lstrip().upper() + if (method not in METHOD): + METHOD = (METHOD + " " + method).lstrip().upper() return METHOD def accMethods_v2(routes, path, status): @@ -301,7 +303,8 @@ def accMethods_v2(routes, path, status): for spec in routes: if (spec["path"] == path and spec["backend"]["status"] == status): for method in spec["methods"]: - METHOD = (METHOD + " " + method).lstrip().upper() + if (method not in METHOD): + METHOD = (METHOD + " " + method).lstrip().upper() return METHOD def check_endpoint(endpoint): @@ -337,6 +340,39 @@ def group_by(payload): result_payload.append({"API_NAME": API_NAME, "TYPE": TYPE, "ENVIRONMENT": ENVIRONMENT, "PATH_PREFIX": PATH_PREFIX, "PATH": PATH, "ENDPOINT": ENDPOINT, "METHOD": method_list, "SCHEMA_BODY_VALIDATION": SCHEMA_BODY_VALIDATION}) return result_payload +def verify_path(json_data_list): + list_final = [] + for item in json_data_list: + if (item["PATH"] == ""): + for item2 in json_data_list: + if (item2["PATH"] == ""): + list_final.append({ + 'API_NAME': item2["API_NAME"], + 'TYPE': item2["TYPE"], + 'ENVIRONMENT': item2["ENVIRONMENT"], + 'METHOD': item2["METHOD"], + 'PATH_PREFIX': "/" + item2["API_NAME"], + 'PATH': item2["PATH_PREFIX"], + 'ENDPOINT': item2["ENDPOINT"], + 'SCHEMA_BODY_VALIDATION': item2["SCHEMA_BODY_VALIDATION"], + 'CONTENT_TYPE': item2["CONTENT_TYPE"] + }) + else: + list_final.append({ + 'API_NAME': item2["API_NAME"], + 'TYPE': item2["TYPE"], + 'ENVIRONMENT': item2["ENVIRONMENT"], + 'METHOD': item2["METHOD"], + 'PATH_PREFIX': "/" + item2["API_NAME"], + 'PATH': item2["PATH_PREFIX"] + item2["PATH"], + 'ENDPOINT': item2["ENDPOINT"], + 'SCHEMA_BODY_VALIDATION': item2["SCHEMA_BODY_VALIDATION"], + 'CONTENT_TYPE': item2["CONTENT_TYPE"] + }) + + return list_final + return json_data_list + def process_api_spec(api_id, compartmentId, environment, swagger, functionId, host, api_gateway_id, rate_limit): type = "REST" config = oci.config.from_file("config") @@ -417,7 +453,7 @@ def process_api_spec(api_id, compartmentId, environment, swagger, functionId, ho }) print(API_NAME, TYPE, ENVIRONMENT, METHOD, PATH_PREFIX, PATH, ENDPOINT, SCHEMA_BODY_VALIDATION, CONTENT_TYPE) put_logs_response = logging.put_logs( - log_id="ocid1.log.oc1.iad.amaaaaaanamaaaaaanamaaaaaanamaaaaaanamaaaaaanamaaaaaanamaaaaaan", + log_id="ocid1.log.oc1.iad.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", put_logs_details=oci.loggingingestion.models.PutLogsDetails( specversion="EXAMPLE-specversion-Value", log_entry_batches=[ @@ -440,10 +476,11 @@ def process_api_spec(api_id, compartmentId, environment, swagger, functionId, ho type="EXAMPLE-type-Value")])) + json_data_list = verify_path(json_data_list) payload = json.dumps(json_data_list) json_data_list = { each['PATH'] : each for each in json_data_list}.values() put_logs_response = logging.put_logs( - log_id="ocid1.log.oc1.iad.amaaaaaanamaaaaaanamaaaaaanamaaaaaanamaaaaaanamaaaaaanamaaaaaan", + log_id="ocid1.log.oc1.iad.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", put_logs_details=oci.loggingingestion.models.PutLogsDetails( specversion="EXAMPLE-specversion-Value", log_entry_batches=[ @@ -464,7 +501,7 @@ def process_api_spec(api_id, compartmentId, environment, swagger, functionId, ho except(Exception) as ex: jsonData = 'error parsing json payload: ' + str(ex) put_logs_response = logging.put_logs( - log_id="ocid1.log.oc1.iad.amaaaaaanamaaaaaanamaaaaaanamaaaaaanamaaaaaanamaaaaaanamaaaaaan", + log_id="ocid1.log.oc1.iad.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", put_logs_details=oci.loggingingestion.models.PutLogsDetails( specversion="EXAMPLE-specversion-Value", log_entry_batches=[ @@ -476,6 +513,10 @@ def process_api_spec(api_id, compartmentId, environment, swagger, functionId, ho source="EXAMPLE-source-Value", type="EXAMPLE-type-Value")])) +def DateEncoder(obj): + if isinstance(obj, datetime.datetime): + return obj.strftime('%Y-%m-%d') + def is_json(swagger): try: body = json.loads(swagger) @@ -483,14 +524,14 @@ def is_json(swagger): except: try: yaml_object = yaml.safe_load(swagger) # yaml_object will be a list or a dict - s = json.dumps(yaml_object, indent=2) + s = json.dumps(yaml_object, indent=2, default=DateEncoder) return False except: return False def convert_json(swagger): yaml_object = yaml.safe_load(swagger) # yaml_object will be a list or a dict - return json.dumps(yaml_object, indent=2) + return json.dumps(yaml_object, indent=2, default=DateEncoder) ### @@ -540,7 +581,7 @@ def handler(ctx, data: io.BytesIO = None): except(Exception) as ex1: jsonData = 'error parsing json payload: ' + str(ex1) put_logs_response = logging.put_logs( - log_id="ocid1.log.oc1.iad.amaaaaaanamaaaaaanamaaaaaanamaaaaaanamaaaaaanamaaaaaanamaaaaaan", + log_id="ocid1.log.oc1.iad.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", put_logs_details=oci.loggingingestion.models.PutLogsDetails( specversion="EXAMPLE-specversion-Value", log_entry_batches=[ @@ -577,7 +618,7 @@ def handler(ctx, data: io.BytesIO = None): except(Exception) as ex: jsonData = 'error parsing json payload: ' + str(ex) put_logs_response = logging.put_logs( - log_id="ocid1.log.oc1.iad.amaaaaaanamaaaaaanamaaaaaanamaaaaaanamaaaaaanamaaaaaanamaaaaaan", + log_id="ocid1.log.oc1.iad.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", put_logs_details=oci.loggingingestion.models.PutLogsDetails( specversion="EXAMPLE-specversion-Value", log_entry_batches=[ @@ -595,4 +636,5 @@ def handler(ctx, data: io.BytesIO = None): ctx, status_code=401, response_data=json.dumps({"active": False, "wwwAuthenticate": jsonData}) - ) \ No newline at end of file + ) + diff --git a/files/createapi/func.py b/files/createapi/func.py index 9b11f38..60bf225 100644 --- a/files/createapi/func.py +++ b/files/createapi/func.py @@ -5,6 +5,7 @@ from fdk import response import oci import requests import yaml +import datetime #### IDCS Routines #### https://docs.oracle.com/en/learn/apigw-modeldeployment/index.html#introduction @@ -124,7 +125,7 @@ def process_api_spec(displayName, compartmentId, environment, swagger): except(Exception) as ex: jsonData = 'error parsing json payload: ' + str(ex) put_logs_response = logging.put_logs( - log_id="ocid1.log.oc1.iad.amaaaaaanamaaaaaanamaaaaaanamaaaaaanamaaaaaanamaaaaaan", + log_id="ocid1.log.oc1.iad.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", put_logs_details=oci.loggingingestion.models.PutLogsDetails( specversion="EXAMPLE-specversion-Value", log_entry_batches=[ @@ -136,6 +137,10 @@ def process_api_spec(displayName, compartmentId, environment, swagger): source="EXAMPLE-source-Value", type="EXAMPLE-type-Value")])) +def DateEncoder(obj): + if isinstance(obj, datetime.datetime): + return obj.strftime('%Y-%m-%d') + def is_json(swagger): try: body = json.loads(swagger) @@ -143,14 +148,14 @@ def is_json(swagger): except: try: yaml_object = yaml.safe_load(swagger) # yaml_object will be a list or a dict - s = json.dumps(yaml_object, indent=2) + s = json.dumps(yaml_object, indent=2, default=DateEncoder) return False except: return False def convert_json(swagger): yaml_object = yaml.safe_load(swagger) # yaml_object will be a list or a dict - return json.dumps(yaml_object, indent=2) + return json.dumps(yaml_object, indent=2, default=DateEncoder) ### @@ -195,7 +200,7 @@ def handler(ctx, data: io.BytesIO = None): except(Exception) as ex1: jsonData = 'error parsing json payload: ' + str(ex1) put_logs_response = logging.put_logs( - log_id="ocid1.log.oc1.iad.amaaaaaanamaaaaaanamaaaaaanamaaaaaanamaaaaaanamaaaaaan", + log_id="ocid1.log.oc1.iad.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", put_logs_details=oci.loggingingestion.models.PutLogsDetails( specversion="EXAMPLE-specversion-Value", log_entry_batches=[ @@ -225,7 +230,7 @@ def handler(ctx, data: io.BytesIO = None): }}) # put_logs_response = logging.put_logs( - # log_id="ocid1.log.oc1.iad.amaaaaaanamaaaaaanamaaaaaanamaaaaaanamaaaaaanamaaaaaan", + # log_id="ocid1.log.oc1.iad.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", # put_logs_details=oci.loggingingestion.models.PutLogsDetails( # specversion="EXAMPLE-specversion-Value", # log_entry_batches=[ @@ -247,7 +252,7 @@ def handler(ctx, data: io.BytesIO = None): except(Exception) as ex: jsonData = 'error parsing json payload: ' + str(ex) put_logs_response = logging.put_logs( - log_id="ocid1.log.oc1.iad.amaaaaaanamaaaaaanamaaaaaanamaaaaaanamaaaaaanamaaaaaan", + log_id="ocid1.log.oc1.iad.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", put_logs_details=oci.loggingingestion.models.PutLogsDetails( specversion="EXAMPLE-specversion-Value", log_entry_batches=[