2022-01-04 14:31:54 +00:00
|
|
|
import json
|
|
|
|
import os
|
|
|
|
|
|
|
|
import requests
|
|
|
|
|
|
|
|
class Chrome:
|
|
|
|
"""
|
|
|
|
## Instância do Chrome
|
|
|
|
---
|
|
|
|
Esta classe utiliza o serviço "svc_chrome.exe" para fazer manipulações no navegador.
|
|
|
|
|
|
|
|
Ela mapeia o robo através da propriedade rid.
|
|
|
|
|
|
|
|
"EP" significa endpoint, e aponta para o endereco na web on se hostea o serviço, por padrão é:
|
|
|
|
|
|
|
|
https://localhost:8443
|
|
|
|
"""
|
|
|
|
|
|
|
|
ep: str = ""
|
|
|
|
|
|
|
|
def __init__(self):
|
|
|
|
self.ep = "https://localhost:8443"
|
|
|
|
|
|
|
|
def __requestget__(self, data: str):
|
|
|
|
|
|
|
|
"""
|
|
|
|
## HTTP GET
|
|
|
|
---
|
|
|
|
Este método é responsável por realizar requisições HTTP do tipo GET.
|
|
|
|
|
|
|
|
Ele retorna o corpo de resposta da requisição, ou uma mensagem de erro, que indica qual foi a irregularidade ocorrida ao chamar a API.
|
|
|
|
"""
|
|
|
|
|
|
|
|
url = self.ep + data
|
|
|
|
print("Calling: " + url)
|
|
|
|
|
|
|
|
apikey = os.environ.get('REPLAY_APIKEY')
|
|
|
|
headers = {"X-API-KEY": apikey}
|
|
|
|
res = requests.get(url, headers=headers, verify=False)
|
|
|
|
|
|
|
|
if res.status_code >= 400:
|
|
|
|
raise Exception(f"HTTP ERROR: {str(res.status_code)} - {res.text}")
|
|
|
|
if res.headers.get("Content-Type") != None and res.headers.get("Content-Type").find("json") != -1:
|
|
|
|
return json.loads(res.text)
|
|
|
|
else:
|
|
|
|
return res.text
|
|
|
|
|
|
|
|
def __requestpost__(self, data: str, object: dict):
|
|
|
|
|
|
|
|
"""
|
|
|
|
## HTTP POST
|
|
|
|
---
|
|
|
|
Este método é responsável por realizar requisições HTTP do tipo POST.
|
|
|
|
|
|
|
|
Ele retorna o corpo de resposta da requisição, ou uma mensagem de erro, que indica qual foi a irregularidade ocorrida ao chamar a API.
|
|
|
|
"""
|
|
|
|
|
|
|
|
url = self.ep + data
|
|
|
|
print("Calling: " + url)
|
|
|
|
|
|
|
|
apikey = os.environ.get('REPLAY_APIKEY')
|
|
|
|
headers = {"X-API-KEY": apikey}
|
|
|
|
res = requests.post(url, json = object, headers = headers, verify = False)
|
|
|
|
|
|
|
|
if res.status_code >= 400:
|
|
|
|
raise Exception(f"HTTP ERROR: {str(res.status_code)} - {res.text}")
|
|
|
|
if res.headers.get("Content-Type") != None and res.headers.get("Content-Type").find("json") != -1:
|
|
|
|
return json.loads(res.text)
|
|
|
|
else:
|
2022-01-04 15:22:24 +00:00
|
|
|
return res.text
|
|
|
|
|
|
|
|
def start (self, to: int = 120):
|
|
|
|
"""
|
|
|
|
## Chrome Start
|
|
|
|
Inicia uma nova sessão/instância do Google Chrome na máquina.
|
|
|
|
|
|
|
|
---
|
|
|
|
#### IMPORTANTE:
|
|
|
|
É um erro comum já estar com o Google Chrome aberto para realizar outras tarefas enquanto programa. Porém, para que este método funcione corretamente, é necessário que não haja nenhuma instância do Chrome, em primeiro ou segundo plano, ativa.
|
|
|
|
|
|
|
|
---
|
|
|
|
#### Parâmetros:
|
|
|
|
- to: Tempo em segundos que a API esperará pela abertura do Chrome. Caso o tempo seja excedido sem que o Chrome seja aberto com sucesso, é retornado um erro.
|
|
|
|
---
|
|
|
|
#### Retorna:
|
|
|
|
|
|
|
|
---
|
|
|
|
"""
|
|
|
|
return self.__requestget__(f"/ipc/chrome/start?to={to}")
|