mirror of
https://github.com/superseriousbusiness/gotosocial
synced 2025-06-05 21:59:39 +02:00
[chore] Serialize times as UTC ISO8601 instead of RFC3339 (#602)
* add time util to mimic utc ISO8601 * use ISO8601 when serializing to frontend * update test notification
This commit is contained in:
30
internal/util/time.go
Normal file
30
internal/util/time.go
Normal file
@@ -0,0 +1,30 @@
|
||||
/*
|
||||
GoToSocial
|
||||
Copyright (C) 2021-2022 GoToSocial Authors admin@gotosocial.org
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package util
|
||||
|
||||
import "time"
|
||||
|
||||
// ISO8601 is a formatter for serializing times that forces ISO8601 behavior.
|
||||
const ISO8601 = "2006-01-02T15:04:05Z"
|
||||
|
||||
// FormatISO8601 converts the given time to UTC and then formats it
|
||||
// using the ISO8601 const, which the Mastodon API is able to understand.
|
||||
func FormatISO8601(t time.Time) string {
|
||||
return t.UTC().Format(ISO8601)
|
||||
}
|
53
internal/util/time_test.go
Normal file
53
internal/util/time_test.go
Normal file
@@ -0,0 +1,53 @@
|
||||
/*
|
||||
GoToSocial
|
||||
Copyright (C) 2021-2022 GoToSocial Authors admin@gotosocial.org
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package util_test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/suite"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/util"
|
||||
"github.com/superseriousbusiness/gotosocial/testrig"
|
||||
)
|
||||
|
||||
type TimeSuite struct {
|
||||
suite.Suite
|
||||
}
|
||||
|
||||
func (suite *TimeSuite) TestISO8601Format1() {
|
||||
testTime := testrig.TimeMustParse("2022-05-17T13:10:59Z")
|
||||
testTimeString := util.FormatISO8601(testTime)
|
||||
suite.Equal("2022-05-17T13:10:59Z", testTimeString)
|
||||
}
|
||||
|
||||
func (suite *TimeSuite) TestISO8601Format2() {
|
||||
testTime := testrig.TimeMustParse("2022-05-09T07:34:35+02:00")
|
||||
testTimeString := util.FormatISO8601(testTime)
|
||||
suite.Equal("2022-05-09T05:34:35Z", testTimeString)
|
||||
}
|
||||
|
||||
func (suite *TimeSuite) TestISO8601Format3() {
|
||||
testTime := testrig.TimeMustParse("2021-10-04T10:52:36+02:00")
|
||||
testTimeString := util.FormatISO8601(testTime)
|
||||
suite.Equal("2021-10-04T08:52:36Z", testTimeString)
|
||||
}
|
||||
|
||||
func TestTimeSuite(t *testing.T) {
|
||||
suite.Run(t, &TimeSuite{})
|
||||
}
|
Reference in New Issue
Block a user