From 706454f2ba15c4a5031f3654d498616bd43e2603 Mon Sep 17 00:00:00 2001 From: Cristiano Hoshikawa Date: Thu, 20 Jun 2024 08:02:45 -0300 Subject: [PATCH] =?UTF-8?q?Caso=20de=20uso=20para=20mesmo=20PATH=20com=20v?= =?UTF-8?q?=C3=A1rios=20m=C3=A9todos.=20Neste=20caso,=20um=20dos=20m=C3=A9?= =?UTF-8?q?todos=20n=C3=A3o=20possui=20valida=C3=A7=C3=A3o=20de=20schema?= =?UTF-8?q?=20e=20os=20demais=20possuem.=20Antes=20da=20corre=C3=A7=C3=A3o?= =?UTF-8?q?,=20h=C3=A1=20valida=C3=A7=C3=A3o=20de=20schema=20para=20todos?= =?UTF-8?q?=20os=20m=C3=A9todos=20deste=20mesmo=20PATH.=20A=20corre=C3=A7?= =?UTF-8?q?=C3=A3o=20foi=20feita=20para=20separar=20o=20deployment=20do=20?= =?UTF-8?q?mesmo=20PATH=20em=20linhas=20diferentes,=20para=20que=20a=20val?= =?UTF-8?q?ida=C3=A7=C3=A3o=20de=20schema=20(body=5Fvalidation=5Fschema)?= =?UTF-8?q?=20seja=20feita=20apenas=20aonde=20deve=20ser.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- files/OCI_API_Gateway_Automation_files.zip | Bin 35921 -> 37302 bytes files/applyValidationApi/func.py | 235 +++++------- files/test/process_api_spec.py | 415 ++++++++++++++++----- 3 files changed, 403 insertions(+), 247 deletions(-) diff --git a/files/OCI_API_Gateway_Automation_files.zip b/files/OCI_API_Gateway_Automation_files.zip index 632a88f4822e7c89972d448811adbc3a4ac76450..3bc633b14aa7e2ff26aff19dbe3c4cfe2a34a454 100644 GIT binary patch delta 12962 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 LfjRd0^K|-uCz!>^ delta 11553 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 UpiG`PPt=E(@$jK8kLS_<15l$^3IG5A diff --git a/files/applyValidationApi/func.py b/files/applyValidationApi/func.py index dba5b1f..b2b2268 100644 --- a/files/applyValidationApi/func.py +++ b/files/applyValidationApi/func.py @@ -181,12 +181,12 @@ def applyAuthApi(compartmentId, displayName, payload, functionId, host, api_gate routes = [ ] new_routes = [ ] for item in payload: - methods = json.loads(json.dumps(item["METHOD"].split(" "))) + methods = [item["METHOD"]] path_prefix = item["PATH_PREFIX"] callback_url = ("https://" + host + item["PATH_PREFIX"] + "validation-callback" + item["PATH"]).replace("{", "${request.path[").replace("}", "]}") if (item["SCHEMA_BODY_VALIDATION"] != ""): put_logs_response = logging.put_logs( - log_id="ocid1.log.oc1.iad.amaaaaaaamaaaaaaamaaaaaaamaaaaaaamaaaaaaamaaaaaaamaaaaaaamaaaaaa", + log_id="ocid1.log.oc1.iad.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", put_logs_details=oci.loggingingestion.models.PutLogsDetails( specversion="EXAMPLE-specversion-Value", log_entry_batches=[ @@ -325,34 +325,6 @@ def applyAuthApi(compartmentId, displayName, payload, functionId, host, api_gate creeateOrUpdateDeployment(compartmendId=compartmentId, displayName=displayName, validation_deployment_details=validation_deployment_details, create_deployment_details=create_deployment_details, api_gateway_id=api_gateway_id) - -def accMethods(routes, path, status): - METHOD = "" - for spec in routes: - if (find_path(spec["path"]) == path and spec["backend"]["status"] == status): - for method in spec["methods"]: - if (method not in METHOD): - METHOD = (METHOD + " " + method).lstrip().upper() - return METHOD - -def accMethods_v2(routes, path, status): - METHOD = "" - for spec in routes: - if (spec["path"] == path and spec["backend"]["status"] == status): - for method in spec["methods"]: - if (method not in METHOD): - METHOD = (METHOD + " " + method).lstrip().upper() - return METHOD - -def accMethods_v3(routes, path, status): - METHOD = "" - for spec in routes: - if (spec["path"] == path and spec["backend"]["status"] == status): - for method in spec["methods"]: - if (method not in METHOD): - METHOD = (METHOD + " " + method).lstrip().upper() - return METHOD - def check_endpoint(schemes, endpoint): if (schemes == ""): if (endpoint.find("http://") == -1 and endpoint.find("https://") == -1): @@ -368,31 +340,6 @@ def check_endpoint(schemes, endpoint): def key_func(k): return k['PATH'] -def group_by(payload): - config = oci.config.from_file("config") - logging = oci.loggingingestion.LoggingClient(config) - payload = json.loads(payload) - INFO = sorted(payload, key=key_func) - result_payload = [ ] - for key, value in groupby(INFO, key_func): - list_elements = [ ] - method_list = "" - for element in list(value): - list_elements.append(element) - for subItem in list_elements: - item = json.loads(json.dumps(subItem)) - if (item["METHOD"] not in method_list): - method_list = (method_list + " " + item["METHOD"]).lstrip().upper() - API_NAME = item["API_NAME"] - TYPE = item["TYPE"] - ENVIRONMENT = item["ENVIRONMENT"] - PATH_PREFIX = item["PATH_PREFIX"] - PATH = item["PATH"] - ENDPOINT = item["ENDPOINT"] - SCHEMA_BODY_VALIDATION = item["SCHEMA_BODY_VALIDATION"] - 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: @@ -460,102 +407,101 @@ def process_api_spec(api_id, compartmentId, environment, swagger, functionId, ho status = spec["backend"]["status"] specPath = spec["path"] - if (version == "3"): - if (has_path_endpoint(endPointOrigin)): - endPoint = find_base_endpoint(endPointOrigin) - specPath = (find_base_pathendpoint(endPointOrigin, specPath)).replace("//", "/") - fullEndpoint = (endPoint + specPath + spec["path"]).replace("{", "${request.path[").replace("}", "]}") - FULL_PATH = specPath + for method in spec["methods"]: + METHOD = method.lstrip().upper() + + if (version == "3"): + if (has_path_endpoint(endPointOrigin)): + endPoint = find_base_endpoint(endPointOrigin) + specPath = (find_base_pathendpoint(endPointOrigin, specPath)).replace("//", "/") + fullEndpoint = (endPoint + specPath + spec["path"]).replace("{", "${request.path[").replace("}", "]}") + FULL_PATH = specPath + ENDPOINT = fullEndpoint + PATH = spec["path"] + PATH_PREFIX = specPath + else: + fullEndpoint = (endPoint + find_base_path(specPath) + find_path(specPath)).replace("{", "${request.path[").replace("}", "]}") + FULL_PATH = specPath + ENDPOINT = fullEndpoint + PATH = find_path(specPath) + PATH_PREFIX = find_base_path(specPath) + else: + schemes = "" + try: + schemes = fullSpec["schemes"][0] + except: + schemes = "https" + + fullEndpoint = check_endpoint(schemes, (endPoint + removeLastSlash(fullSpec["basePath"]) + spec["path"]).replace("{", "${request.path[").replace("}", "]}")) + FULL_PATH = fullSpec["basePath"] + spec["path"] ENDPOINT = fullEndpoint PATH = spec["path"] - PATH_PREFIX = specPath - METHOD = accMethods_v3(api_spec["routes"], spec["path"], status) - else: - fullEndpoint = (endPoint + find_base_path(specPath) + find_path(specPath)).replace("{", "${request.path[").replace("}", "]}") - FULL_PATH = specPath - ENDPOINT = fullEndpoint - PATH = find_path(specPath) - PATH_PREFIX = find_base_path(specPath) - METHOD = accMethods(api_spec["routes"], find_path(spec["path"]), status) - else: - schemes = "" - try: - schemes = fullSpec["schemes"][0] - except: - schemes = "https" + PATH_PREFIX = removeLastSlash(fullSpec["basePath"]) - fullEndpoint = check_endpoint(schemes, (endPoint + removeLastSlash(fullSpec["basePath"]) + spec["path"]).replace("{", "${request.path[").replace("}", "]}")) - FULL_PATH = fullSpec["basePath"] + spec["path"] - ENDPOINT = fullEndpoint - PATH = spec["path"] - PATH_PREFIX = removeLastSlash(fullSpec["basePath"]) - METHOD = accMethods_v2(api_spec["routes"], PATH, status) - - OPERATIONID = fullSpec["paths"][spec["path"]][str(spec["methods"][0]).lower()]["operationId"] - API_NAME = fullSpec["info"]["title"] - if (version == "3"): - try: + OPERATIONID = fullSpec["paths"][spec["path"]][str(spec["methods"][0]).lower()]["operationId"] + API_NAME = fullSpec["info"]["title"] + if (version == "3"): try: - reference = str(fullSpec["paths"][spec["path"]][str(spec["methods"][0]).lower()]["requestBody"]["content"]["application/json"]["schema"]["$ref"]).replace("#/components/schemas/", "") - SCHEMA_BODY_VALIDATION = reference + "," + api_id + try: + reference = str(fullSpec["paths"][spec["path"]][str(spec["methods"][0]).lower()]["requestBody"]["content"]["application/json"]["schema"]["$ref"]).replace("#/components/schemas/", "") + SCHEMA_BODY_VALIDATION = reference + "," + api_id + except: + reference = str(fullSpec["paths"][spec["path"]][str(spec["methods"][0]).lower()]["requestBody"]["content"]["application/json"]) + SCHEMA_BODY_VALIDATION = reference + CONTENT_TYPE = "application/json" except: - reference = str(fullSpec["paths"][spec["path"]][str(spec["methods"][0]).lower()]["requestBody"]["content"]["application/json"]) - SCHEMA_BODY_VALIDATION = reference - CONTENT_TYPE = "application/json" - except: + SCHEMA_BODY_VALIDATION = "" + CONTENT_TYPE = "" + else: SCHEMA_BODY_VALIDATION = "" CONTENT_TYPE = "" - else: - SCHEMA_BODY_VALIDATION = "" - CONTENT_TYPE = "" - try: - reference = str(fullSpec["paths"][spec["path"]][str(spec["methods"][0]).lower()]["parameters"][0]["schema"]["$ref"]).replace("#/definitions/", "") - SCHEMA_BODY_VALIDATION = reference + "," + api_id - CONTENT_TYPE = "application/json" - except: - SCHEMA_BODY_VALIDATION = "" - CONTENT_TYPE = "" - TYPE = type - ENVIRONMENT = environment - json_data_list.append({ - 'API_NAME': API_NAME, - 'TYPE': TYPE, - 'ENVIRONMENT': ENVIRONMENT, - 'METHOD': METHOD, - 'PATH_PREFIX': PATH_PREFIX, - 'PATH': PATH, - 'ENDPOINT': ENDPOINT, - 'SCHEMA_BODY_VALIDATION': SCHEMA_BODY_VALIDATION, - 'CONTENT_TYPE': CONTENT_TYPE - }) - 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.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", - put_logs_details=oci.loggingingestion.models.PutLogsDetails( - specversion="EXAMPLE-specversion-Value", - log_entry_batches=[ - oci.loggingingestion.models.LogEntryBatch( - entries=[ - oci.loggingingestion.models.LogEntry( - data="api deployment: " + json.dumps({ - 'API_NAME': API_NAME, - 'TYPE': TYPE, - 'ENVIRONMENT': ENVIRONMENT, - 'METHOD': METHOD, - 'PATH_PREFIX': PATH_PREFIX, - 'PATH': PATH, - 'ENDPOINT': ENDPOINT, - 'SCHEMA_BODY_VALIDATION': SCHEMA_BODY_VALIDATION, - 'CONTENT_TYPE': CONTENT_TYPE - }), - id="ocid1.test.oc1..00000001.EXAMPLE-id-Value")], - source="EXAMPLE-source-Value", - type="EXAMPLE-type-Value")])) + try: + reference = str(fullSpec["paths"][spec["path"]][str(spec["methods"][0]).lower()]["parameters"][0]["schema"]["$ref"]).replace("#/definitions/", "") + SCHEMA_BODY_VALIDATION = reference + "," + api_id + CONTENT_TYPE = "application/json" + except: + SCHEMA_BODY_VALIDATION = "" + CONTENT_TYPE = "" + TYPE = type + ENVIRONMENT = environment + json_data_list.append({ + 'API_NAME': API_NAME, + 'TYPE': TYPE, + 'ENVIRONMENT': ENVIRONMENT, + 'METHOD': METHOD, + 'PATH_PREFIX': PATH_PREFIX, + 'PATH': PATH, + 'ENDPOINT': ENDPOINT, + 'SCHEMA_BODY_VALIDATION': SCHEMA_BODY_VALIDATION, + 'CONTENT_TYPE': CONTENT_TYPE + }) + 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.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", + put_logs_details=oci.loggingingestion.models.PutLogsDetails( + specversion="EXAMPLE-specversion-Value", + log_entry_batches=[ + oci.loggingingestion.models.LogEntryBatch( + entries=[ + oci.loggingingestion.models.LogEntry( + data="api deployment: " + json.dumps({ + 'API_NAME': API_NAME, + 'TYPE': TYPE, + 'ENVIRONMENT': ENVIRONMENT, + 'METHOD': METHOD, + 'PATH_PREFIX': PATH_PREFIX, + 'PATH': PATH, + 'ENDPOINT': ENDPOINT, + 'SCHEMA_BODY_VALIDATION': SCHEMA_BODY_VALIDATION, + 'CONTENT_TYPE': CONTENT_TYPE + }), + id="ocid1.test.oc1..00000001.EXAMPLE-id-Value")], + source="EXAMPLE-source-Value", + 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.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", put_logs_details=oci.loggingingestion.models.PutLogsDetails( @@ -564,15 +510,12 @@ def process_api_spec(api_id, compartmentId, environment, swagger, functionId, ho oci.loggingingestion.models.LogEntryBatch( entries=[ oci.loggingingestion.models.LogEntry( - data="json_data_list: " + str(json_data_list), + data="json_data_list: " + payload, id="ocid1.test.oc1..00000001.EXAMPLE-id-Value")], source="EXAMPLE-source-Value", type="EXAMPLE-type-Value")])) - # if (version == "2"): - # payload = json.loads(json.dumps(group_by(payload))) - # json_data_list = { each['PATH'] : each for each in payload}.values() - payload = json.loads(json.dumps(group_by(payload))) + payload = json.loads(json.dumps(json_data_list)) print(payload) applyAuthApi(compartmentId=compartmentId, displayName=API_NAME, payload=payload, functionId=functionId, host=host, api_gateway_id=api_gateway_id, rate_limit=rate_limit) @@ -702,4 +645,4 @@ 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/test/process_api_spec.py b/files/test/process_api_spec.py index 6a731ad..887d212 100644 --- a/files/test/process_api_spec.py +++ b/files/test/process_api_spec.py @@ -17,7 +17,7 @@ import datetime # config = oci.config.from_file(profile_name='DEFAULT') # # Método: getSpec() -# text_file = open("/Teste 2024-03-15/teste1.yaml", "r") +# text_file = open("/Users/cristianohoshikawa/Dropbox/ORACLE/B3/API Gateway/Teste 2024-03-15/qrcode.yaml", "r") def migrate_to_apigw(payload, url, clientID, secretID): auth = clientID + ":" + secretID @@ -35,7 +35,7 @@ def migrate_to_apigw(payload, url, clientID, secretID): def getSpec(name): - text_file = open(name, "r") + text_file = open(name, "r", encoding='utf-8') data = text_file.read() text_file.close() @@ -239,14 +239,28 @@ def is_json(swagger): except: return False +def replace_escape_chars(obj): + for k, v in obj.items(): + if isinstance(v, str): + obj[k] = v.replace('\\\\', '\\"') + elif isinstance(v, dict): + obj[k] = replace_escape_chars(v) + elif isinstance(v, list): + for i in range(len(v)): + if isinstance(v[i], str): + v[i] = v[i].replace('\\\\', '\\"') + elif isinstance(v[i], dict): + v[i] = replace_escape_chars(v[i]) + return obj + 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, default=DateEncoder) - + x = json.dumps(yaml_object, ensure_ascii=False, indent=2, default=DateEncoder).encode('utf-8') + return x.decode() def process_api_spec(): # displayName = "EXEMPLO" - compartmentId = "ocid1.compartment.oc1..aaaaaaaaqomaaaaaaaaqomaaaaaaaaqomaaaaaaaaqomaaaaaaaaqomaaaaaaaaqom" + compartmentId = "ocid1.compartment.oc1..aaaaaaaaqom2belitvh5ubr342rgzyeycvyg3zt6b4i4owmkzpnpwft37rga" environment = "QA" type = "REST" rate_limit = "2500,CLIENT_IP" @@ -261,7 +275,7 @@ def process_api_spec(): print("erro") -# Create a default config using DEFAULT profile in default location + # Create a default config using DEFAULT profile in default location # Refer to # https://docs.cloud.oracle.com/en-us/iaas/Content/API/Concepts/sdkconfig.htm#SDK_and_CLI_Configuration_File # for more info @@ -296,40 +310,43 @@ def process_api_spec(): # ----------------------------------------------------------------- arquivo = [] - arquivo.append("/Teste 2024-03-15/teste1.yaml") - arquivo.append("/Testes 2024-03-11/teste2.json") - arquivo.append("/Testes 2024-03-11/teste3.yaml") - arquivo.append("/Testes 2024-03-11/teste4.yaml") - arquivo.append("/Teste 2024-03-15/teste5.yaml") - arquivo.append("/Teste 2024-03-18/teste6.yaml") - arquivo.append("/Teste 2024-03-18/teste7.yaml") - arquivo.append("/Teste 2024-03-18/teste8.yaml") - arquivo.append("/Teste 2024-03-18/teste9.yaml") - arquivo.append("/Teste 2024-03-18/teste10.yaml") - arquivo.append("/Teste 2024-03-18/teste11.yaml") - arquivo.append("/Teste 2024-03-20/teste12.json") - arquivo.append("/Teste 2024-03-21/teste13.yaml") - arquivo.append("/Teste 2024-03-21/teste14.json") - arquivo.append("/Teste 2024-03-22/teste15.json") - arquivo.append("/Teste 2024-03-25/teste16.yaml") + arquivo.append("/Users/cristianohoshikawa/Dropbox/ORACLE/B3/API Gateway/Testes 2024-03-11/1.0.0-rc2_rcc-interop-agenda_modificado.json") + arquivo.append("/Users/cristianohoshikawa/Dropbox/ORACLE/B3/API Gateway/Testes 2024-03-11/caso1.yaml") + arquivo.append("/Users/cristianohoshikawa/Dropbox/ORACLE/B3/API Gateway/Testes 2024-03-11/caso2.yaml") + arquivo.append("/Users/cristianohoshikawa/Dropbox/ORACLE/B3/API Gateway/Teste 2024-03-15/caso2024-03-15.yaml") + arquivo.append("/Users/cristianohoshikawa/Dropbox/ORACLE/B3/API Gateway/Teste 2024-03-15/qrcode.yaml") + #arquivo.append("/Users/cristianohoshikawa/Dropbox/ORACLE/B3/API Gateway/Teste 2024-03-18/1.0.0-rc1_cob 1.yaml") + arquivo.append("/Users/cristianohoshikawa/Dropbox/ORACLE/B3/API Gateway/Teste 2024-03-18/1.0.0-rc1_cobv.yaml") + arquivo.append("/Users/cristianohoshikawa/Dropbox/ORACLE/B3/API Gateway/Teste 2024-03-18/1.0.0-rc1_loc.yaml") + arquivo.append("/Users/cristianohoshikawa/Dropbox/ORACLE/B3/API Gateway/Teste 2024-03-18/1.0.0-rc1_lotecobv.yaml") + #arquivo.append("/Users/cristianohoshikawa/Dropbox/ORACLE/B3/API Gateway/Teste 2024-03-18/1.0.0-rc1_pix.yaml") + arquivo.append("/Users/cristianohoshikawa/Dropbox/ORACLE/B3/API Gateway/Teste 2024-03-18/1.0.0-rc1_webhook.yaml") + arquivo.append("/Users/cristianohoshikawa/Dropbox/ORACLE/B3/API Gateway/Teste 2024-03-20/1.0.0-rc8_cprs.json") + #arquivo.append("/Users/cristianohoshikawa/Dropbox/ORACLE/B3/API Gateway/Teste 2024-03-21/1.0.0-rc1_cob 1.yaml") + arquivo.append("/Users/cristianohoshikawa/Dropbox/ORACLE/B3/API Gateway/Teste 2024-03-21/1.0.0-rc2_rcc-interop-agenda.json") + arquivo.append("/Users/cristianohoshikawa/Dropbox/ORACLE/B3/API Gateway/Teste 2024-03-22/1.0.0-rc8_cprs.json") + #arquivo.append("/Users/cristianohoshikawa/Dropbox/ORACLE/B3/API Gateway/Teste 2024-03-25/Banco B3/1.0.0-rc1_cob.yaml") + arquivo.append("/Users/cristianohoshikawa/Dropbox/ORACLE/B3/API Gateway/Teste 2024-06-03/1.0.0-rc1_cob.yaml") + arquivo.append("/Users/cristianohoshikawa/Dropbox/ORACLE/B3/API Gateway/Teste 2024-06-19/1.0.0-rc1_cob.yaml") display = [] - display.append("caso1") - display.append("caso2") - display.append("caso3") - display.append("caso4") - display.append("caso5") - display.append("caso6") - display.append("caso7") - display.append("caso8") - display.append("caso9") - display.append("caso10") - display.append("caso11") - display.append("caso12") - display.append("caso13") - display.append("caso14") - display.append("caso15") - display.append("caso16") - + display.append("Interoperabilidades-Agenda") + display.append("caso-1") + display.append("caso-2") + display.append("caso2024-03-15") + display.append("qrcode") + #display.append("cob") + display.append("cobv") + display.append("loc") + display.append("lotecobv") + #display.append("pix") + display.append("webhook") + display.append("cprs") + #display.append("cob1") + display.append("rcc-interop-agenda") + display.append("Rural") + #display.append("cob") + display.append("pix") + display.append("GI - Modulo PIX Cob") idxArquivo = 0 while idxArquivo < len(arquivo): @@ -341,6 +358,16 @@ def process_api_spec(): data = getSpec(arquivo[idxArquivo]) fullSpec = json.loads(data) + swagger = str(data) + swagger2 = str(data) + if (is_json(swagger)): + body = json.loads(swagger) + else: + body = json.loads(convert_json(swagger2)) + swagger = convert_json(data) + + swagger = swagger + displayName = display[idxArquivo] version = "3" @@ -377,81 +404,86 @@ def process_api_spec(): status = spec["backend"]["status"] specPath = spec["path"] - if (version == "3"): - if (has_path_endpoint(endPointOrigin)): - endPoint = find_base_endpoint(endPointOrigin) - specPath = (find_base_pathendpoint(endPointOrigin, specPath)).replace("//", "/") - fullEndpoint = (endPoint + specPath + spec["path"]).replace("{", "${request.path[").replace("}", "]}") - FULL_PATH = specPath + for method in spec["methods"]: + METHOD = method.lstrip().upper() + + if (version == "3"): + if (has_path_endpoint(endPointOrigin)): + endPoint = find_base_endpoint(endPointOrigin) + specPath = (find_base_pathendpoint(endPointOrigin, specPath)).replace("//", "/") + fullEndpoint = (endPoint + specPath + spec["path"]).replace("{", "${request.path[").replace("}", "]}") + FULL_PATH = specPath + ENDPOINT = fullEndpoint + PATH = spec["path"] + PATH_PREFIX = specPath + #METHOD = accMethods_v3(api_spec["routes"], spec["path"], status) + else: + fullEndpoint = (endPoint + find_base_path(specPath) + find_path(specPath)).replace("{", "${request.path[").replace("}", "]}") + FULL_PATH = specPath + ENDPOINT = fullEndpoint + PATH = find_path(specPath) + PATH_PREFIX = find_base_path(specPath) + #METHOD = accMethods(api_spec["routes"], find_path(spec["path"]), status) + else: + schemes = "" + try: + schemes = fullSpec["schemes"][0] + except: + schemes = "https" + + fullEndpoint = check_endpoint(schemes, (endPoint + removeLastSlash(fullSpec["basePath"]) + spec["path"]).replace("{", "${request.path[").replace("}", "]}")) + FULL_PATH = fullSpec["basePath"] + spec["path"] ENDPOINT = fullEndpoint PATH = spec["path"] - PATH_PREFIX = specPath - METHOD = accMethods_v3(api_spec["routes"], spec["path"], status) + PATH_PREFIX = removeLastSlash(fullSpec["basePath"]) + #METHOD = accMethods_v2(api_spec["routes"], PATH, status) + + OPERATIONID = fullSpec["paths"][spec["path"]][str(spec["methods"][0]).lower()]["operationId"] + API_NAME = fullSpec["info"]["title"] + if (version == "3"): + try: + SCHEMA_BODY_VALIDATION = str(fullSpec["paths"][spec["path"]][str(spec["methods"][0]).lower()]["requestBody"]["content"]["application/json"]) + CONTENT_TYPE = "application/json" + except: + SCHEMA_BODY_VALIDATION = "" + CONTENT_TYPE = "" else: - fullEndpoint = (endPoint + find_base_path(specPath) + find_path(specPath)).replace("{", "${request.path[").replace("}", "]}") - FULL_PATH = specPath - ENDPOINT = fullEndpoint - PATH = find_path(specPath) - PATH_PREFIX = find_base_path(specPath) - METHOD = accMethods(api_spec["routes"], find_path(spec["path"]), status) - else: - schemes = "" - try: - schemes = fullSpec["schemes"][0] - except: - schemes = "https" - - fullEndpoint = check_endpoint(schemes, (endPoint + removeLastSlash(fullSpec["basePath"]) + spec["path"]).replace("{", "${request.path[").replace("}", "]}")) - FULL_PATH = fullSpec["basePath"] + spec["path"] - ENDPOINT = fullEndpoint - PATH = spec["path"] - PATH_PREFIX = removeLastSlash(fullSpec["basePath"]) - METHOD = accMethods_v2(api_spec["routes"], PATH, status) - - OPERATIONID = fullSpec["paths"][spec["path"]][str(spec["methods"][0]).lower()]["operationId"] - API_NAME = fullSpec["info"]["title"] - if (version == "3"): - try: - SCHEMA_BODY_VALIDATION = str(fullSpec["paths"][spec["path"]][str(spec["methods"][0]).lower()]["requestBody"]["content"]["application/json"]) - CONTENT_TYPE = "application/json" - except: SCHEMA_BODY_VALIDATION = "" CONTENT_TYPE = "" - else: - SCHEMA_BODY_VALIDATION = "" - CONTENT_TYPE = "" - try: - reference = str(fullSpec["paths"][spec["path"]][str(spec["methods"][0]).lower()]["parameters"][0]["schema"]["$ref"]).replace("#/definitions/", "") - SCHEMA_BODY_VALIDATION = reference + "," + api_id - CONTENT_TYPE = "application/json" - except: - SCHEMA_BODY_VALIDATION = "" - CONTENT_TYPE = "" - TYPE = type - ENVIRONMENT = environment - json_data_list.append({ - 'API_NAME': API_NAME, - 'TYPE': TYPE, - 'ENVIRONMENT': ENVIRONMENT, - 'METHOD': METHOD, - 'PATH_PREFIX': PATH_PREFIX, - 'PATH': PATH, - 'ENDPOINT': ENDPOINT, - 'SCHEMA_BODY_VALIDATION': SCHEMA_BODY_VALIDATION, - 'CONTENT_TYPE': CONTENT_TYPE - }) - print(API_NAME, TYPE, ENVIRONMENT, METHOD, PATH_PREFIX, PATH, ENDPOINT, SCHEMA_BODY_VALIDATION, CONTENT_TYPE) + try: + reference = str(fullSpec["paths"][spec["path"]][str(spec["methods"][0]).lower()]["parameters"][0]["schema"]["$ref"]).replace("#/definitions/", "") + SCHEMA_BODY_VALIDATION = reference + "," + api_id + CONTENT_TYPE = "application/json" + except: + SCHEMA_BODY_VALIDATION = "" + CONTENT_TYPE = "" + TYPE = type + ENVIRONMENT = environment + json_data_list.append({ + 'API_NAME': API_NAME, + 'TYPE': TYPE, + 'ENVIRONMENT': ENVIRONMENT, + 'METHOD': METHOD, + 'PATH_PREFIX': PATH_PREFIX, + 'PATH': PATH, + 'ENDPOINT': ENDPOINT, + 'SCHEMA_BODY_VALIDATION': SCHEMA_BODY_VALIDATION, + 'CONTENT_TYPE': CONTENT_TYPE + }) + print(API_NAME, TYPE, ENVIRONMENT, METHOD, PATH_PREFIX, PATH, ENDPOINT, SCHEMA_BODY_VALIDATION, CONTENT_TYPE) 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() + #json_data_list = { each['PATH'] : each for each in json_data_list}.values() # if (version == "2"): # payload = json.loads(json.dumps(group_by(payload))) # #json_data_list = { each['PATH'] : each for each in payload}.values() - payload = json.loads(json.dumps(group_by(payload))) + #payload = json.loads(json.dumps(group_by(payload))) + payload = json.loads(json.dumps(json_data_list)) print(payload) - # migrate_to_apigw(payload, "https://teste.integration.ocp.oraclecloud.com:443/ic/api/integration/v1/flows/rest/MIGRATE_TO_APIGW/1.0/convert", "OIC_SERVICE_USER_BASICAUTH", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx") + # migrate_to_apigw(payload, "https://oic-hoshikawa2-idcci5ks1puo-ia.integration.ocp.oraclecloud.com:443/ic/api/integration/v1/flows/rest/MIGRATE_TO_APIGW/1.0/convert", "OIC_SERVICE_USER_BASICAUTH", "e7ae6069-e471-496e-916d-5dc2ae3edac0") + applyAuthApi(compartmentId=compartmentId, displayName=API_NAME, payload=payload, functionId="", host="", api_gateway_id="", rate_limit=rate_limit) c = 0 idxArquivo = idxArquivo + 1 @@ -460,6 +492,187 @@ def process_api_spec(): print(ex) time.sleep(2) + +def applyAuthApi(compartmentId, displayName, payload, functionId, host, api_gateway_id, rate_limit): + config = oci.config.from_file(profile_name='DEFAULT') + logging = oci.loggingingestion.LoggingClient(config) + apigateway_client = oci.apigateway.DeploymentClient(config) + listGateway = apigateway_client.list_deployments(compartment_id=compartmentId, display_name=displayName, lifecycle_state="ACTIVE") + gateway = json.loads(str(listGateway.data)) + ind = -1 + c = -1 + if (len(gateway) > 0): + c = 0 + for item in gateway["items"]: + if (item["gateway_id"] == api_gateway_id): + ind = c + break + c = c + 1 + if (gateway["items"] != [] and c > -1 and ind > -1): + gateway_id = gateway["items"][ind]["gateway_id"] + deployment_id = gateway["items"][ind]["id"] + else: + gateway_id = api_gateway_id + deployment_id = 0 + + try: + rate_config = rate_limit.split(',') + rate_seconds = int(rate_config[0]) + rate_key = rate_config[1] + rate_limiting = oci.apigateway.models.RateLimitingPolicy( + rate_in_requests_per_second=rate_seconds, + rate_key=rate_key) + except: + rate_limiting = None + + path_prefix = "/" + routes = [ ] + new_routes = [ ] + for item in payload: + methods = [item["METHOD"]] + path_prefix = item["PATH_PREFIX"] + callback_url = ("https://" + host + item["PATH_PREFIX"] + "validation-callback" + item["PATH"]).replace("{", "${request.path[").replace("}", "]}") + if (item["SCHEMA_BODY_VALIDATION"] != ""): + put_logs_response = logging.put_logs( + log_id="ocid1.log.oc1.iad.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", + put_logs_details=oci.loggingingestion.models.PutLogsDetails( + specversion="EXAMPLE-specversion-Value", + log_entry_batches=[ + oci.loggingingestion.models.LogEntryBatch( + entries=[ + oci.loggingingestion.models.LogEntry( + data="callback_url: " + callback_url, + id="ocid1.test.oc1..00000001.EXAMPLE-id-Value")], + source="EXAMPLE-source-Value", + type="EXAMPLE-type-Value")])) + routes.append( + oci.apigateway.models.ApiSpecificationRoute( + path=item["PATH"], + backend=oci.apigateway.models.HTTPBackend( + type="HTTP_BACKEND", + url=callback_url, + is_ssl_verify_disabled=False), + methods=methods, + request_policies=oci.apigateway.models.ApiSpecificationRouteRequestPolicies( + header_transformations=oci.apigateway.models.HeaderTransformationPolicy( + set_headers=oci.apigateway.models.SetHeaderPolicy( + items=[ + oci.apigateway.models.SetHeaderPolicyItem( + name="body_schema_validation", + values=[item["SCHEMA_BODY_VALIDATION"]], + if_exists="APPEND")]), + ) + ))) + new_routes.append( + oci.apigateway.models.ApiSpecificationRoute( + path=item["PATH"], + backend=oci.apigateway.models.HTTPBackend( + type="HTTP_BACKEND", + url=item["ENDPOINT"], + is_ssl_verify_disabled=False), + methods=methods, + request_policies=oci.apigateway.models.ApiSpecificationRouteRequestPolicies( + header_transformations=oci.apigateway.models.HeaderTransformationPolicy( + set_headers=oci.apigateway.models.SetHeaderPolicy( + items=[ + oci.apigateway.models.SetHeaderPolicyItem( + name="body_schema_validation", + values=[item["SCHEMA_BODY_VALIDATION"]], + if_exists="APPEND")]), + ) + ) + )) + + else: + routes.append( + oci.apigateway.models.ApiSpecificationRoute( + path=item["PATH"], + backend=oci.apigateway.models.HTTPBackend( + type="HTTP_BACKEND", + url=callback_url, + is_ssl_verify_disabled=False), + methods=methods)) + new_routes.append( + oci.apigateway.models.ApiSpecificationRoute( + path=item["PATH"], + backend=oci.apigateway.models.HTTPBackend( + type="HTTP_BACKEND", + url=item["ENDPOINT"], + is_ssl_verify_disabled=False), + methods=methods)) + + + if (new_routes != [ ]): + validation_deployment_details=oci.apigateway.models.UpdateDeploymentDetails( + display_name=displayName + "-validation", + specification=oci.apigateway.models.ApiSpecification( + request_policies=oci.apigateway.models.ApiSpecificationRequestPolicies( + rate_limiting=rate_limiting, + authentication=oci.apigateway.models.CustomAuthenticationPolicy( + type="CUSTOM_AUTHENTICATION", + function_id=functionId, + is_anonymous_access_allowed=False, + parameters={ + 'token': 'request.headers[token]', + 'body': 'request.body', + 'body_schema_validation': 'request.headers[body_schema_validation]', + 'opc-request-id': 'request.headers[opc-request-id]'}, + cache_key=["token", "opc-request-id"], + validation_failure_policy=oci.apigateway.models.ModifyResponseValidationFailurePolicy( + type="MODIFY_RESPONSE", + response_code="401", + response_message="${request.auth[error]}" + ) + )), + routes=new_routes)) + create_deployment_details=oci.apigateway.models.CreateDeploymentDetails( + display_name=displayName + "-validation", + compartment_id=compartmentId, + gateway_id=gateway_id, + path_prefix= path_prefix + "validation-callback", + specification=oci.apigateway.models.ApiSpecification( + request_policies=oci.apigateway.models.ApiSpecificationRequestPolicies( + rate_limiting=rate_limiting, + authentication=oci.apigateway.models.CustomAuthenticationPolicy( + type="CUSTOM_AUTHENTICATION", + function_id=functionId, + is_anonymous_access_allowed=False, + parameters={ + 'token': 'request.headers[token]', + 'body': 'request.body', + 'body_schema_validation': 'request.headers[body_schema_validation]', + 'opc-request-id': 'request.headers[opc-request-id]'}, + cache_key=["token", "opc-request-id"], + validation_failure_policy=oci.apigateway.models.ModifyResponseValidationFailurePolicy( + type="MODIFY_RESPONSE", + response_code="401", + response_message="${request.auth[error]}" + ) + )), + routes=new_routes)) + #creeateOrUpdateDeployment(compartmendId=compartmentId, displayName=displayName + "-validation", validation_deployment_details=validation_deployment_details, create_deployment_details=create_deployment_details, api_gateway_id=api_gateway_id) + + if (routes != [ ]): + # The 1st layer will not authenticate + validation_deployment_details=oci.apigateway.models.UpdateDeploymentDetails( + display_name=displayName, + specification=oci.apigateway.models.ApiSpecification( + request_policies=oci.apigateway.models.ApiSpecificationRequestPolicies( + rate_limiting=rate_limiting), + routes=routes)) + + create_deployment_details=oci.apigateway.models.CreateDeploymentDetails( + display_name=displayName, + compartment_id=compartmentId, + gateway_id=gateway_id, + path_prefix= path_prefix, + specification=oci.apigateway.models.ApiSpecification( + request_policies=oci.apigateway.models.ApiSpecificationRequestPolicies( + rate_limiting=rate_limiting), + routes=routes)) + + #creeateOrUpdateDeployment(compartmendId=compartmentId, displayName=displayName, validation_deployment_details=validation_deployment_details, create_deployment_details=create_deployment_details, api_gateway_id=api_gateway_id) + # Mudar DisplayName e text_file para poder executar process_api_spec()