new functionality: adding the capacity for treat Numeric Values

This commit is contained in:
2024-06-23 22:23:14 -03:00
parent a3815da653
commit ace331d317
4 changed files with 41 additions and 10 deletions

View File

@@ -38,7 +38,7 @@ We can then, from a list of Strings (Logs for example), have a poorly formatted
This code has more logical complexity: This code has more logical complexity:
![img.png](images/repl_value1.png) ![img.png](images/repl_value3.png)
It works with flags: It works with flags:
@@ -46,6 +46,8 @@ It works with flags:
- **flag_attribute**: It marks that an attribute was found - **flag_attribute**: It marks that an attribute was found
- **flag_dois_pontos**: It marks that the algorithm is prepared to find the content of an attribute (the content is after the :) - **flag_dois_pontos**: It marks that the algorithm is prepared to find the content of an attribute (the content is after the :)
- **flag_colchetes**: It marks that an attribute items values will be analyzed - **flag_colchetes**: It marks that an attribute items values will be analyzed
- **flag_descobre_tipo**: It marks for find the type of an attribute (String or Numeric)
- **flag_string**: If True, the attribute will be a String; If False, it's a Numeric attribute
>**Note**: The attribute to be redacted NEED to be a String. If the attribute is a set of attributes, the algorithm will ignore all the set. In the example code **redact.py**, the attribute **items** is in the list but it will not redact anything. >**Note**: The attribute to be redacted NEED to be a String. If the attribute is a set of attributes, the algorithm will ignore all the set. In the example code **redact.py**, the attribute **items** is in the list but it will not redact anything.
@@ -61,7 +63,7 @@ What the algorithm performs:
: need to respect a JSON association : need to respect a JSON association
'value' is the value between '', yes the value needs to be a String 'value' is the value between '' for a String, or a Numeric value (Integer or Double with a . and no '')
So you can use the class **Redaction.py** in you code, like this: So you can use the class **Redaction.py** in you code, like this:

View File

@@ -33,6 +33,8 @@ class Redaction():
# flag_vezes = 0 # flag_vezes = 0
flag_dois_pontos = False flag_dois_pontos = False
flag_colchetes = False flag_colchetes = False
flag_string = True
flag_descobre_tipo = False
i = 0 i = 0
z = pattern z = pattern
str_acc = "" str_acc = ""
@@ -45,7 +47,9 @@ class Redaction():
print("except") print("except")
if (message[i] == ":" and not flag_aspas and flag_attribute): if (message[i] == ":" and not flag_aspas and flag_attribute):
flag_dois_pontos = True flag_dois_pontos = True
if (flag_aspas and message[i] != "'" and message[i] != "\"" and flag_attribute and flag_dois_pontos): flag_descobre_tipo = True
if ((flag_aspas and message[i] != "'" and message[i] != "\"" and flag_attribute and flag_dois_pontos)
or (message[i] in "0123456789." and flag_attribute and flag_dois_pontos and not flag_string)):
str_acc = str_acc + message[i] str_acc = str_acc + message[i]
message = message[0:i] + "*" + message[i + 1:len(message) + i] message = message[0:i] + "*" + message[i + 1:len(message) + i]
if (message[i] == "{" and flag_dois_pontos and not flag_aspas): if (message[i] == "{" and flag_dois_pontos and not flag_aspas):
@@ -53,25 +57,48 @@ class Redaction():
flag_dois_pontos = False flag_dois_pontos = False
flag_aspas = False flag_aspas = False
flag_colchetes = False flag_colchetes = False
flag_descobre_tipo = False
flag_string = True
if ((message[i] == "}" or message[i] == "]") and not flag_aspas): if ((message[i] == "}" or message[i] == "]") and not flag_aspas):
flag_attribute = False flag_attribute = False
flag_dois_pontos = False flag_dois_pontos = False
flag_aspas = False flag_aspas = False
flag_colchetes = False flag_colchetes = False
flag_descobre_tipo = False
flag_string = True
str_acc = "" str_acc = ""
if (flag_dois_pontos and not flag_aspas and message[i] == "["): if ((message[i] == "}" or message[i] == "]") and not flag_aspas and not flag_string):
flag_colchetes = True
if (message[i] == "," and not flag_aspas and not flag_colchetes):
flag_attribute = False flag_attribute = False
flag_dois_pontos = False flag_dois_pontos = False
flag_aspas = False flag_aspas = False
flag_colchetes = False flag_colchetes = False
flag_descobre_tipo = False
flag_string = True
str_acc = ""
if (flag_dois_pontos and not flag_aspas and message[i] == "["):
flag_colchetes = True
if (message[i] == "," and not flag_aspas and not flag_colchetes and not flag_string):
flag_attribute = False
flag_dois_pontos = False
flag_aspas = False
flag_colchetes = False
flag_descobre_tipo = False
flag_string = True
str_acc = "" str_acc = ""
if ((message[i] == "'" or message[i] == "\"")): if ((message[i] == "'" or message[i] == "\"")):
flag_aspas = not flag_aspas flag_aspas = not flag_aspas
if (flag_aspas == False and flag_attribute == True and flag_dois_pontos and len(str_acc) > 0 and not flag_colchetes): if (flag_descobre_tipo):
flag_string = True
flag_descobre_tipo = False
if (message[i] in "01234567890." and flag_descobre_tipo):
flag_string = False
flag_descobre_tipo = False
str_acc = str_acc + message[i]
message = message[0:i] + "*" + message[i + 1:len(message) + i]
if (flag_aspas == False and flag_attribute == True and flag_dois_pontos and len(str_acc) > 0 and not flag_colchetes and flag_string):
flag_attribute = False flag_attribute = False
flag_dois_pontos = False flag_dois_pontos = False
flag_descobre_tipo = False
str_acc = "" str_acc = ""
i = i + 1 i = i + 1
return message return message

BIN
images/repl_value3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

View File

@@ -18,12 +18,14 @@ ATTRIBUTE_PATTERNS = [
"original", "original",
"type", "type",
"solicitacaoPagador", "solicitacaoPagador",
"expiracao", #Não funciona para atributos numéricos, apenas para String "expiracao",
"chave", "chave",
"description", "description",
"items", "items",
"example", "example",
"required" "required",
"x-scope",
"maxLength"
] ]
Messages = [ Messages = [
@@ -37,7 +39,7 @@ Messages = [
"User's date of birth: 04/29/1990", "User's date of birth: 04/29/1990",
"User's IP address: 192.168.1.1", "User's IP address: 192.168.1.1",
"User's API key: a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6", "User's API key: a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",
'{ "nome": "João Silva", "cpf": "123.456.789-00", "teste": "Teste Valor", "valor": 200.00, "original": "Original Valor", "type": "Tipo Valor", "solicitacaoPagador": "Solicitação Pagador", "expiracao": "2021-12-31", "chave": "Chave Valor", "description": "Descrição Valor", "items": ["Item1", "Item2"], "example": "Exemplo Valor"}' '{ "nome": "João Silva", "cpf": "123.456.789-00", "maxLength": [1.0, 2.0, 3.0], "teste": "Teste Valor", "valor": 200.00, "original": "Original Valor", "type": "Tipo Valor", "solicitacaoPagador": "Solicitação Pagador", "expiracao": "2021-12-31", "chave": "Chave Valor", "description": "Descrição Valor", "items": ["Item1", "Item2"], "example": "Exemplo Valor"}'
] ]
redaction = Redaction.Redaction() redaction = Redaction.Redaction()