Add Current endpoint
continuous-integration/drone/push Build is passing Details

This commit is contained in:
Kekskurse 2022-01-14 22:48:29 +01:00
parent 68b4166c8d
commit 4e75f15ab3
Signed by: kekskurse
GPG Key ID: 728ACCB59341E7E4
1 changed files with 24 additions and 17 deletions

41
main.go
View File

@ -13,8 +13,8 @@ import (
) )
type Event struct { type Event struct {
name string Name string
eventTimestamp time.Time EventTimestamp time.Time
} }
var eventlog string var eventlog string
@ -35,8 +35,8 @@ func main() {
defer func() { defer func() {
e := Event{ e := Event{
name: "Nothing", Name: "Nothing",
eventTimestamp: time.Now(), EventTimestamp: time.Now(),
} }
addEvent(e) addEvent(e)
}() }()
@ -71,6 +71,13 @@ func runHttpServer() {
w.Write([]byte(line)) w.Write([]byte(line))
} }
}) })
http.HandleFunc("/current", func(w http.ResponseWriter, r *http.Request) {
res, err := json.Marshal(currentState)
if err != nil {
log.Fatal().Err(err).Msg("Cant Marshal Current State")
}
w.Write(res)
})
http.HandleFunc("/tags", func(w http.ResponseWriter, r *http.Request) { http.HandleFunc("/tags", func(w http.ResponseWriter, r *http.Request) {
@ -117,8 +124,8 @@ func runHttpServer() {
name := r.FormValue("name") name := r.FormValue("name")
e := Event{ e := Event{
name: name, Name: name,
eventTimestamp: eventTimestamp, EventTimestamp: eventTimestamp,
} }
addEvent(e) addEvent(e)
@ -147,8 +154,8 @@ func readStateFromFile() {
log.Fatal().Err(err).Str("TimeString", details[0]).Msg("Cant parse time from eventlog") log.Fatal().Err(err).Str("TimeString", details[0]).Msg("Cant parse time from eventlog")
} }
e := Event{ e := Event{
name: details[1], Name: details[1],
eventTimestamp: t, EventTimestamp: t,
} }
handleEvent(e) handleEvent(e)
@ -158,7 +165,7 @@ func readStateFromFile() {
func saveEvent(e Event) { func saveEvent(e Event) {
var line string var line string
line = e.eventTimestamp.Format(time.RFC3339)+";"+e.name+"\r\n" line = e.EventTimestamp.Format(time.RFC3339)+";"+e.Name +"\r\n"
f, err := os.OpenFile(eventlog, os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0600) f, err := os.OpenFile(eventlog, os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0600)
if err != nil { if err != nil {
panic(err) panic(err)
@ -180,17 +187,17 @@ func addEvent(e Event) {
func handleEvent(e Event) { func handleEvent(e Event) {
log.Debug().Msg("Handle New Event") log.Debug().Msg("Handle New Event")
if lastEvent.name != "" { if lastEvent.Name != "" {
duration := e.eventTimestamp.Sub(lastEvent.eventTimestamp) duration := e.EventTimestamp.Sub(lastEvent.EventTimestamp)
log.Debug().Int64("Duration", int64(duration.Seconds())).Str("LastEventName", lastEvent.name).Msg("Calculatet Duration for last event") log.Debug().Int64("Duration", int64(duration.Seconds())).Str("LastEventName", lastEvent.Name).Msg("Calculatet Duration for last event")
//Add to state //Add to state
currentDuration := currentState[lastEvent.name][lastEvent.eventTimestamp.Format("02.01.06")] currentDuration := currentState[lastEvent.Name][lastEvent.EventTimestamp.Format("02.01.06")]
if len(currentState[lastEvent.name]) == 0 { if len(currentState[lastEvent.Name]) == 0 {
currentState[lastEvent.name] = make(map[string]int64) currentState[lastEvent.Name] = make(map[string]int64)
} }
currentDuration += int64(duration.Seconds()) currentDuration += int64(duration.Seconds())
log.Debug().Int64("Day Duration", currentDuration).Str("Day", lastEvent.eventTimestamp.Format("02.01.06")).Str("typ", lastEvent.name).Msg("Add Duration to Day") log.Debug().Int64("Day Duration", currentDuration).Str("Day", lastEvent.EventTimestamp.Format("02.01.06")).Str("typ", lastEvent.Name).Msg("Add Duration to Day")
currentState[lastEvent.name][lastEvent.eventTimestamp.Format("02.01.06")] = currentDuration currentState[lastEvent.Name][lastEvent.EventTimestamp.Format("02.01.06")] = currentDuration
} }
lastEvent = e lastEvent = e