From fa2f7e499ea199cc6feb6de21147f895249c9c53 Mon Sep 17 00:00:00 2001 From: comp500 Date: Wed, 12 Jun 2019 19:16:43 +0100 Subject: [PATCH] Revert "Fix time, it actually uses the RFC now" This reverts commit d0e4ccb681555c79bf1d3ddea8c0fab760bf661f. --- curseforge/request.go | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/curseforge/request.go b/curseforge/request.go index 1e0c417..76331a5 100644 --- a/curseforge/request.go +++ b/curseforge/request.go @@ -1,4 +1,5 @@ package curseforge + import ( "bytes" "encoding/json" @@ -7,6 +8,7 @@ import ( "io" "net/http" "strconv" + "strings" "time" ) @@ -145,14 +147,31 @@ func getModInfo(modID int) (modInfo, error) { return infoRes, nil } +const cfDateFormatString = "2006-01-02T15:04:05.999" + +type cfDateFormat struct { + time.Time +} + +func (f *cfDateFormat) UnmarshalJSON(input []byte) error { + trimmed := strings.Trim(string(input), `"`) + time, err := time.Parse(cfDateFormatString, trimmed) + if err != nil { + return err + } + + f.Time = time + return nil +} + // modFileInfo is a subset of the deserialised JSON response from the Curse API for mod files type modFileInfo struct { - ID int `json:"id"` - FileName string `json:"fileNameOnDisk"` - FriendlyName string `json:"fileName"` - Date time.Time `json:"fileDate"` - Length int `json:"fileLength"` - FileType int `json:"releaseType"` + ID int `json:"id"` + FileName string `json:"fileNameOnDisk"` + FriendlyName string `json:"fileName"` + Date cfDateFormat `json:"fileDate"` + Length int `json:"fileLength"` + FileType int `json:"releaseType"` // fileStatus? means latest/preferred? DownloadURL string `json:"downloadUrl"` GameVersions []string `json:"gameVersion"`