Wrapper não oficial para conexão com a API do sistema IXC Provedor
Esta biblioteca não faz parte das bibliotecas oficiais do IXC Provedor.
O desenvolvimento é feito de forma independente e utiliza apenas uma "interface" de conexão com as funcionalidades providas pela API oficial do IXC.
Você poderá encontrar orientações de como parametrizar as requisições na WIKI oficial, disponilizada pela própria IXC Soft.
Disponível nos repositórios PyPI
Adicione ao seu projeto utilizando o comando pip install.
pip install ixcpyIXC_ACCESS_TOKEN=conteúdo-do-token-gerado-dentro-do-ixc-provedor
IXC_SERVER_DOMAIN=www.domínio-do-seu-servidor-ixc-provedor.com.brNote
Não sabe como gerar um token? Basta consultar este tutorial.
from ixcpy import Connection
connection = Connection(table='cliente')
# O operador "%" fará a busca em todos os clientes que possuem "João" no campo "razao".
connection.where(args='razao % "João"')
# Para encontrar um registro pelo nome que seja exatamente igual ao que você busca,
# substitua o operador "%" pelo "=".
connection.where(args='razao = "Nome Completo do João"')
# Para realizar a busca em qualquer outro campo, basta alterar a query,
# como no exemplo abaixo, tendo em vista que o campo deve corresponder
# a uma coluna da tabela que você está buscando, no IXC Provedor.
# Nesse caso, o campo "cnpj_cpf", na tabela "cliente"
connection.where(args='cnpj_cpf = "123.456.789-10"')Depois de invocar o método
where()uma ou mais vezes, basta invocar o métodomany()na sua instância deConnection
Então você irá obter a instância de um objeto do tipoResponse, de onde poderá acessar a quantidade de registros retornados, através do métodototal().
E uma lista dos objetos, a partir do métodorecords(), tudo através da instância deResponse.
Supondo que você possua o ID de um determinado registro e queira buscá-lo no IXC Provedor, seria contraproducente encadear "chamadas where".
Nesse caso, basta invocar o método one() em uma instância de Connection, passando o ID como parâmetro, como no exemplo a seguir:
from ixcpy import Connection
connection = Connection(table='cliente')
# Se o IXC encontrar um registro (na tabela "cliente" nesse caso), o método "one" retornará um 'dict'
# onde as chaves serão do tipo 'str' e o valor de cada campo podendo ser 'str', 'int' ou 'bool',
# dependendo do formato retornado pelo IXC Provedor. Se nenhum registro for encontrado,
# o método "one" retornará um 'None'
cliente = connection.one(record_id=12345)Uma opção prática é criar uma classe personalizada que herde de Connection, assim será possível encapsular as buscas
detro da subclasse correspondente à tabela que você deseja manipular, como no exemplo a seguir:
from ixcpy import Connection
class Cliente(Connection):
def __init__(self):
super().__init__('cliente')
def lista_por_data_cadastro(self, data_cadastro: str, page: int = 1) -> list:
self.where(args=f'data_cadastro >= {data_cadastro}')
resposta = self.many(page=page)
return resposta.records()git clone https://github.com/SousaFelipe/ixcpy.gitcd ixcpypython -m venv .venv.venv\Scripts\activatepython -m pip install -r requirements.txtContribuições são sempre bem-vindas!
Se você conhece uma maneira melhor de fazer algo, por favor, me avise!
Caso contrário, é sempre melhor fazer um PR na branch main.
At.te,
Felipe S. Carmo.