Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 25 additions & 1 deletion controller/timing_software_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ func timingSoftwareController() {
router.OPTIONS("/easywk/v3", ok)

router.POST("/alge", algeLivetimingData)
router.POST("/alge/meet/:meeting", algeLivetimingDataWithAuth)
}

func easyWkLivetimingGet(c *gin.Context) {
Expand Down Expand Up @@ -129,7 +130,30 @@ func algeLivetimingData(c *gin.Context) {
return
}

str, err := service.AlgeLivetimingRequest(request)
str, err := service.AlgeLivetimingRequestWithPassword(request)
if err != nil {
c.String(http.StatusInternalServerError, "ERROR: %s", err.Error())
return
}

c.String(http.StatusOK, str)
}

func algeLivetimingDataWithAuth(c *gin.Context) {
meeting := c.Param("meeting")
if meeting == "" {
c.String(http.StatusInternalServerError, "ERROR: given meeting was empty")
return
}

var request model.AlgeActionRequest // password not required

if err := c.BindJSON(&request); err != nil {
c.String(http.StatusInternalServerError, "ERROR: %s", err.Error())
return
}

str, err := service.AlgeLivetimingRequest(meeting, request)
if err != nil {
c.String(http.StatusInternalServerError, "ERROR: %s", err.Error())
return
Expand Down
31 changes: 11 additions & 20 deletions importer/easy_wk_importer.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package importer

import (
"encoding/json"
"errors"
"fmt"
"github.com/swimresults/import-service/model"
"github.com/swimresults/service-core/misc"
Expand All @@ -27,27 +26,23 @@ func SetEasyWkMeeting() {
fmt.Printf("set meeting for live services to: '%s'; password is: '%s'\n", CurrentMeeting.Meeting, CurrentMeeting.Password)
}

func SetHeatStartTime(event int, heat int) error {
if CurrentMeeting.Meeting == "" {
return errors.New("no meeting for live services declared")
}
func GetCurrentEasyWkMeetingId() string {
return CurrentMeeting.Meeting
}

_, err := hc.SetHeatStart(CurrentMeeting.Meeting, event, heat)
func SetHeatStartTime(meeting string, event int, heat int) error {
_, err := hc.SetHeatStart(meeting, event, heat)
return err
//return SetHeatTime(event, heat, misc.TimeNow(), time.Time{})
}

func SetHeatFinishTime(event int, heat int) error {
if CurrentMeeting.Meeting == "" {
return errors.New("no meeting for live services declared")
}

return SetHeatTime(event, heat, time.Time{}, misc.TimeNow())
func SetHeatFinishTime(meeting string, event int, heat int) error {
return SetHeatTime(meeting, event, heat, time.Time{}, misc.TimeNow())
}

func SetHeatTime(event int, heatNumber int, startAt time.Time, finishedAt time.Time) error {
func SetHeatTime(meeting string, event int, heatNumber int, startAt time.Time, finishedAt time.Time) error {
heat := startModel.Heat{
Meeting: CurrentMeeting.Meeting,
Meeting: meeting,
Event: event,
Number: heatNumber,
StartAt: startAt,
Expand All @@ -58,13 +53,9 @@ func SetHeatTime(event int, heatNumber int, startAt time.Time, finishedAt time.T
return err
}

func ImportResult(event int, heat int, lane int, time time.Duration, meter int, reaction bool, finished bool) error {
if CurrentMeeting.Meeting == "" {
return errors.New("no meeting for live services declared")
}

func ImportResult(meeting string, event int, heat int, lane int, time time.Duration, meter int, reaction bool, finished bool) error {
start := startModel.Start{
Meeting: CurrentMeeting.Meeting,
Meeting: meeting,
Event: event,
HeatNumber: heat,
Lane: lane,
Expand Down
2 changes: 1 addition & 1 deletion importer/pdf_importer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,6 @@ func TestImportPdfStartList_IESC23(t *testing.T) {
}

func TestSwimTimeToDuration(t *testing.T) {
timeString := "01:02,64"
timeString := "02:25,21"
println(SwimTimeToDuration(timeString))
}
31 changes: 24 additions & 7 deletions service/timing_software_service.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package service

import (
"errors"
"fmt"
"github.com/swimresults/import-service/importer"
"github.com/swimresults/import-service/model"
Expand Down Expand Up @@ -70,6 +71,12 @@ func EasyWkLivetimingRequest(request model.EasyWkActionRequest) (string, error)
return "ERROR: Passwort nicht korrekt oder keine Aktion definiert", nil
}

meeting := importer.GetCurrentEasyWkMeetingId()

if meeting == "" {
return "ERROR", errors.New("no meeting for live services declared")
}

var err error

switch request.Action {
Expand All @@ -81,7 +88,7 @@ func EasyWkLivetimingRequest(request model.EasyWkActionRequest) (string, error)
currentHeat = request.Heat

// start heat by setting start time
err = importer.SetHeatStartTime(currentEvent, currentHeat)
err = importer.SetHeatStartTime(meeting, currentEvent, currentHeat)

return "OK", err
case "time":
Expand Down Expand Up @@ -121,12 +128,12 @@ func EasyWkLivetimingRequest(request model.EasyWkActionRequest) (string, error)
return "OK", fmt.Errorf("[EasyWk Time Import] time to duration conversion failed for: %d", request.Time)
}

err = importer.ImportResult(currentEvent, currentHeat, request.Lane, t, m, reaction, request.Finished == "yes")
err = importer.ImportResult(meeting, currentEvent, currentHeat, request.Lane, t, m, reaction, request.Finished == "yes")

return "OK", err
case "raceresult":
// set heat to finished
err = importer.SetHeatFinishTime(currentEvent, currentHeat)
err = importer.SetHeatFinishTime(meeting, currentEvent, currentHeat)
return "OK", err
default:
return "ERROR: Unbekannte Aktion", nil
Expand Down Expand Up @@ -161,14 +168,24 @@ func EasyWkReactionToDuration(t int) (time.Duration, error) {
return d, err
}

func AlgeLivetimingRequest(request model.AlgeActionRequest) (string, error) {
func AlgeLivetimingRequestWithPassword(request model.AlgeActionRequest) (string, error) {
pwd := regexp.MustCompile(`[^a-zA-Z0-9 ]+`).ReplaceAllString(request.Password, "")
pwdIntern := regexp.MustCompile(`[^a-zA-Z0-9 ]+`).ReplaceAllString(importer.CurrentMeeting.Password, "")
if pwd != pwdIntern || request.Action == "" {
fmt.Printf("password or no action error with password '%s' and action '%s'\n", request.Password, request.Action)
return "ERROR: Passwort nicht korrekt oder keine Aktion definiert", nil
}

meeting := importer.GetCurrentEasyWkMeetingId()

if meeting == "" {
return "ERROR", errors.New("no meeting for live services declared")
}

return AlgeLivetimingRequest(meeting, request)
}

func AlgeLivetimingRequest(meeting string, request model.AlgeActionRequest) (string, error) {
var err error

switch request.Action {
Expand All @@ -180,7 +197,7 @@ func AlgeLivetimingRequest(request model.AlgeActionRequest) (string, error) {
currentHeat = request.Heat

// start heat by setting start time
err = importer.SetHeatStartTime(currentEvent, currentHeat)
err = importer.SetHeatStartTime(meeting, currentEvent, currentHeat)

return "OK", err
case "time":
Expand All @@ -201,12 +218,12 @@ func AlgeLivetimingRequest(request model.AlgeActionRequest) (string, error) {
return "OK", fmt.Errorf("[EasyWk Time Import] time to duration conversion failed for: %d", request.Time)
}

err = importer.ImportResult(currentEvent, currentHeat, request.Lane, t, request.Meter, false, request.Finished == "yes")
err = importer.ImportResult(meeting, currentEvent, currentHeat, request.Lane, t, request.Meter, false, request.Finished == "yes")

return "OK", err
case "STOP":
// set heat to finished
err = importer.SetHeatFinishTime(currentEvent, currentHeat)
err = importer.SetHeatFinishTime(meeting, currentEvent, currentHeat)
return "OK", err
default:
return "ERROR: Unbekannte Aktion", nil
Expand Down
Loading