A python client for foxbit exchange API
Project description
Foxbit.py
Cliente python para API websocket da foxbit
Instalação
PIP
Para instalar via pip
, execute no terminal:
$> pip install foxbit.py
GIT
Para instalar via git
, execute no terminal:
$> git clone https://github.com/lunhg/foxbit.py
Testar
Para testar o código-fonte, instale o pacote tox
e execute:
$> tox
Uso
O exemplo apresentado aqui é feito no console. Mas também funciona em um script ou em um notebook.
Existem exemplos na pasta examples/
que podem auxiliar.
Configuração do ambiente virtual
Para experimentar, sem comprometer o seu sistema, é recomendado usar a abordagem git
de instalação e configurar um ambiente virtual.
Para configuração do ambiente virtual, é necessária a instalção do pacote virtualenv
. Para isso, execute:
$> pip install virtualenv
$> virtualenv <meu_nome_de_ambiente_virtual>
$> source ./<meu_nome_de_ambiente_virtual>/bin/activate
$> pip install -e .
Adentre no console do python:
$> python
Python 3.10.1 (main, Xxx XXXX, XX:XX:XX) [GCC X.Y.Z] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
Importe classes e métodos:
>>> from foxbit.client import Client
>>> from foxbit.frame import MessageFrame
- Classe
foxbit.client.Client
: subclasse derivada dewebsocket.WebsocketApp
; - Classe
foxbit.frame.MessageFrame
: classe de utilidade para criar mensagens em formato definido:- Possue o método de instância
toJSON
que tranforma, apropriadamente, as propriedades da classe em umastr
JSON; - Possue o método estático
fromJSON
que tranforma, apropriadamente, umastr
JSON em uma instância deMessageFrame
;
- Possue o método de instância
Defina funções de callback
:
on_open
Função que é executada assim que a conexão com os servidores da Foxbit são estabelecidos.
Requer 1 argumento, ws
, que é o próprio cliente websocket.
Note que aqui podemos enviar um frame, através do método send
, na forma de uma string
JSON, contendo:
- o tipo de mensagem;
- a sequência da mensagem;
- o endpoint da mensagem;
- o payload da mensagem;
>>> def on_open(ws):
... """Assim que a conexão for aberta, envie uma requisição"""
... print("Connected")
... frame = MessageFrame(
... endpoint='GetInstruments',
... payload={'OMSId': 1}
... )
... client.send(frame.toJSON())
>>>
Note que a instância client
ainda será definida posteriormente
on_close
Função que é executada assim que a conexão com os servidores da Foxbit são fechados. Requer três argumento:
ws
, que é o próprio cliente websocket;status
que é o estado durante o fechamento;msg
que é uma mensagem do servidor;
>>> def on_close(ws, status, msg):
... """Assim que a conexão for fechada, crie uma mensagem"""
... print("Disconnected with status {}: {}".format(status, msg))
>>>
on_message
Função que é executada assim que uma mensagem é recebida.
Requer dois argumentos, ws
, que é o próprio cliente websocket, e msg
, que é a mensagem recebida.
Note que aqui podemos fechar a conexão através do método close
.
>>> def on_message(ws, msg):
... """"Assim que a mensagem for recebida,
... transforme-a em um `dict`, imprima e feche a conexão"""
... parsed = MessageFrame.fromJSON(msg)
... print(parsed)
... client.close()
>>>
on_error
função que é executada assim que algum erro é estabelecido.
Requer dois argumentos, ws
, que é o proóprio cliente websocket, e err
, que é o proório erro.
>>> def on_error(ws, err):
... print(err)
>>>
Defina uma instância de cliente
>>> client = Client(
... on_open=on_open,
... on_close=on_close,
... on_message=on_message,
... on_error=on_error
...)
>>>
Execute a função run_forever
>>> client.run_forever()
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.