You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
881 B
Go
47 lines
881 B
Go
2 months ago
|
package point
|
||
|
|
||
|
import (
|
||
|
"gitea.weitiangame.com/sdk/wt-game/utils/ahttp"
|
||
|
"github.com/go-resty/resty/v2"
|
||
|
"go.uber.org/zap"
|
||
|
"sync"
|
||
|
)
|
||
|
|
||
|
var (
|
||
|
instance *Point
|
||
|
once sync.Once
|
||
|
)
|
||
|
|
||
|
type Point struct {
|
||
|
clientID string
|
||
|
logger *zap.Logger
|
||
|
ahttp *resty.Request
|
||
|
}
|
||
|
|
||
|
// New returns the singleton instance of Point.
|
||
|
func New(clientID string, logger *zap.Logger) *Point {
|
||
|
once.Do(func() {
|
||
|
instance = &Point{
|
||
|
clientID: clientID,
|
||
|
logger: logger,
|
||
|
}
|
||
|
|
||
|
if instance.logger == nil {
|
||
|
var err error
|
||
|
instance.logger, err = zap.NewProduction()
|
||
|
if err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
instance.ahttp = ahttp.New(nil).SetLog(instance.logger).Client()
|
||
|
})
|
||
|
|
||
|
return instance
|
||
|
}
|
||
|
|
||
|
// Event sends an event to the specified URL.
|
||
|
func (p *Point) Event(data map[string]interface{}) (*resty.Response, error) {
|
||
|
return p.ahttp.SetBody(data).Post("https://e.tapdb.net/v2/event")
|
||
|
}
|