Added missing fields - scraper and worker fixes
This commit is contained in:
@@ -7,6 +7,57 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
// ParseIssueDateTimeToUnix combines cbc:IssueDate and cbc:IssueTime (with timezone offsets) into one Unix timestamp.
|
||||
func ParseIssueDateTimeToUnix(issueDate, issueTime string) int64 {
|
||||
issueDate = strings.TrimSpace(issueDate)
|
||||
issueTime = strings.TrimSpace(issueTime)
|
||||
if issueDate == "" {
|
||||
return 0
|
||||
}
|
||||
if issueTime == "" {
|
||||
return ParseDateToUnix(issueDate)
|
||||
}
|
||||
dateCore := issueDate
|
||||
if len(issueDate) >= 10 && issueDate[4] == '-' && issueDate[7] == '-' {
|
||||
dateCore = issueDate[:10]
|
||||
}
|
||||
combined := dateCore + "T" + issueTime
|
||||
if t, err := ParseDate(combined); err == nil {
|
||||
return t.Unix()
|
||||
}
|
||||
return ParseDateToUnix(issueDate)
|
||||
}
|
||||
|
||||
// TransmissionDispatchUnix reads BT-803 (eSender) transmission date/time from extension content (root or eForms extension).
|
||||
func TransmissionDispatchUnix(ext *UBLExtensions) int64 {
|
||||
if ext == nil || ext.UBLExtension == nil || ext.UBLExtension.ExtensionContent == nil {
|
||||
return 0
|
||||
}
|
||||
ec := ext.UBLExtension.ExtensionContent
|
||||
if u := ParseIssueDateTimeToUnix(ec.TransmissionDate, ec.TransmissionTime); u != 0 {
|
||||
return u
|
||||
}
|
||||
if ec.EformsExtension != nil {
|
||||
if u := ParseIssueDateTimeToUnix(ec.EformsExtension.TransmissionDate, ec.EformsExtension.TransmissionTime); u != 0 {
|
||||
return u
|
||||
}
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
// ParseEuropeanAmount normalizes TED amount strings (spaces, comma decimal) for strconv.ParseFloat.
|
||||
func ParseEuropeanAmount(raw string) (float64, bool) {
|
||||
s := strings.TrimSpace(raw)
|
||||
s = strings.ReplaceAll(s, "\u00a0", "")
|
||||
s = strings.ReplaceAll(s, " ", "")
|
||||
s = strings.ReplaceAll(s, ",", ".")
|
||||
if s == "" {
|
||||
return 0, false
|
||||
}
|
||||
v, err := strconv.ParseFloat(s, 64)
|
||||
return v, err == nil
|
||||
}
|
||||
|
||||
// parseDate parses various date formats used in TED XML
|
||||
func ParseDate(dateStr string) (time.Time, error) {
|
||||
if dateStr == "" {
|
||||
|
||||
Reference in New Issue
Block a user