t2/services/capture.go

68 lines
1.5 KiB
Go

package services
import (
"context"
"time"
"gitea.henriburau.de/haw-lan/cod4watcher/models"
)
type CaptureService struct {
p models.Persistence
}
var mockCaptures = []models.Capture{
{ID: 1, Host: "80.57.28.137", Port: "28960", Active: true, Name: "Gungame HAW-LAN 11", Start: time.Now().Add(-1 * time.Hour)},
{ID: 1, Host: "80.57.28.137", Port: "28960", Active: true, Name: "Gungame HAW-LAN 12", Start: time.Now().Add(-5 * time.Minute)},
}
func NewCaptureService(persistence models.Persistence) *CaptureService {
return &CaptureService{
p: persistence,
}
}
func (cs *CaptureService) CreateCapture(ctx context.Context, capture *models.Capture) error {
return cs.p.CreateCapture(ctx, capture)
}
func (cs *CaptureService) GetActiveCapures(ctx context.Context) ([]models.Capture, error) {
captures, err := cs.p.GetCaptures(ctx)
if err != nil {
return nil, err
}
var result []models.Capture
for _, capture := range captures {
if capture.Active {
result = append(result, capture)
}
}
return result, nil
}
func (cs *CaptureService) GetCaptureById(id int) (*models.Capture, error) {
capture := mockCaptures[0]
server, err := models.NewCOD4ServerStatus(capture.Host, capture.Port, time.Second)
if err != nil {
return nil, err
}
status, err := server.GetServerStatus()
if err != nil {
return nil, err
}
capture.MapScores = []models.MapScore{
{
ID: 0,
StartTime: status.MapStartTime,
Map: status.MapName,
ScoreList: status.Score,
},
}
return &capture, nil
}