From a12dcae4e467eb231027e22c342ecc8db5ec29ad Mon Sep 17 00:00:00 2001 From: Alessio Date: Fri, 18 Aug 2023 18:59:15 -0300 Subject: [PATCH] Add helper function to format Space duration --- pkg/scraper/space.go | 12 ++++++++++++ pkg/scraper/space_test.go | 15 +++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/pkg/scraper/space.go b/pkg/scraper/space.go index 9310dd8..4e7c1e4 100644 --- a/pkg/scraper/space.go +++ b/pkg/scraper/space.go @@ -26,6 +26,18 @@ type Space struct { IsDetailsFetched bool } +func (space Space) FormatDuration() string { + duration := space.EndedAt.Time.Sub(space.StartedAt.Time) / 1000 + h := int(duration.Hours()) + m := int(duration.Minutes()) % 60 + s := int(duration.Seconds()) % 60 + + if h != 0 { + return fmt.Sprintf("%dh%02dm", h, m) + } + return fmt.Sprintf("%dm%02ds", m, s) +} + func ParseAPISpace(apiCard APICard) Space { ret := Space{} ret.ID = SpaceID(apiCard.BindingValues.ID.StringValue) diff --git a/pkg/scraper/space_test.go b/pkg/scraper/space_test.go index 701058e..d178e9e 100644 --- a/pkg/scraper/space_test.go +++ b/pkg/scraper/space_test.go @@ -25,3 +25,18 @@ func TestParseSpace(t *testing.T) { assert.Equal(SpaceID("1YpKkZVyQjoxj"), space.ID) assert.Equal("https://t.co/WBPAHNF8Om", space.ShortUrl) } + +func TestFormatSpaceDuration(t *testing.T) { + assert := assert.New(t) + s := Space{ + StartedAt: TimestampFromUnix(1000 * 1000), + EndedAt: TimestampFromUnix(5000 * 1000), + } + assert.Equal(s.FormatDuration(), "1h06m") + + s.EndedAt = TimestampFromUnix(500000 * 1000) + assert.Equal(s.FormatDuration(), "138h36m") + + s.EndedAt = TimestampFromUnix(1005 * 1000) + assert.Equal(s.FormatDuration(), "0m05s") +}