Add registrar
This commit is contained in:
parent
c5d82fab11
commit
db866e672b
67
ops/registrar.go
Normal file
67
ops/registrar.go
Normal file
@ -0,0 +1,67 @@
|
||||
package ops
|
||||
|
||||
import (
|
||||
"github.com/kcotugno/tacitus"
|
||||
"github.com/kcotugno/tacitus/gdax"
|
||||
"github.com/kcotugno/tacitus/gdax/websocket"
|
||||
"github.com/kcotugno/tacitus/postgres"
|
||||
)
|
||||
|
||||
type Registrar struct {
|
||||
db *postgres.Client
|
||||
wc *gdax.ListenerService
|
||||
|
||||
logger tacitus.Logger
|
||||
}
|
||||
|
||||
func NewRegistrar() *Registrar {
|
||||
r := Registrar{}
|
||||
|
||||
r.db = postgres.NewClient()
|
||||
r.wc = &gdax.ListenerService{}
|
||||
r.wc.Client = websocket.NewClient()
|
||||
|
||||
return &r
|
||||
}
|
||||
|
||||
func (r *Registrar) Record(products ...string) error {
|
||||
r.db.Name = "gdax"
|
||||
r.db.User = "gdax"
|
||||
if err := r.db.Open(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := r.wc.Open(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
r.record()
|
||||
r.wc.Subscribe(products...)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (r *Registrar) SetLogger(logger tacitus.Logger) {
|
||||
r.db.SetLogger(logger)
|
||||
r.wc.Logger = logger
|
||||
r.logger = logger
|
||||
}
|
||||
|
||||
func (r *Registrar) record() {
|
||||
go func () {
|
||||
for t := range r.wc.Stream() {
|
||||
go func (trade tacitus.Trade) {
|
||||
_, err := r.db.TradeService().CreateTrade(trade)
|
||||
if err != nil {
|
||||
r.logger.Info("Error inserting trade: %v", err)
|
||||
}
|
||||
}(t)
|
||||
}
|
||||
}()
|
||||
|
||||
go func () {
|
||||
for err := range r.wc.Error() {
|
||||
r.logger.Info("Registrar received error: %v", err)
|
||||
}
|
||||
}()
|
||||
}
|
Reference in New Issue
Block a user