sync file-type support across upload/convert and fix collected_at timezone handling
This commit is contained in:
@@ -66,11 +66,41 @@ func (p *BMCParser) parseFiles() error {
|
||||
result.Filename = p.result.Filename
|
||||
|
||||
appendExtractionWarnings(result, p.files)
|
||||
if result.CollectedAt.IsZero() {
|
||||
if ts := inferCollectedAtFromExtractedFiles(p.files); !ts.IsZero() {
|
||||
result.CollectedAt = ts.UTC()
|
||||
}
|
||||
}
|
||||
p.result = result
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func inferCollectedAtFromExtractedFiles(files []ExtractedFile) time.Time {
|
||||
var latestReliable time.Time
|
||||
var latestAny time.Time
|
||||
for _, f := range files {
|
||||
ts := f.ModTime
|
||||
if ts.IsZero() {
|
||||
continue
|
||||
}
|
||||
if latestAny.IsZero() || ts.After(latestAny) {
|
||||
latestAny = ts
|
||||
}
|
||||
// Ignore placeholder archive mtimes like 1980-01-01.
|
||||
if ts.Year() < 2000 {
|
||||
continue
|
||||
}
|
||||
if latestReliable.IsZero() || ts.After(latestReliable) {
|
||||
latestReliable = ts
|
||||
}
|
||||
}
|
||||
if !latestReliable.IsZero() {
|
||||
return latestReliable
|
||||
}
|
||||
return latestAny
|
||||
}
|
||||
|
||||
func appendExtractionWarnings(result *models.AnalysisResult, files []ExtractedFile) {
|
||||
if result == nil {
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user