chore: release v0.26.2
This commit is contained in:
@@ -7,6 +7,7 @@ import (
|
||||
"io"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"regexp"
|
||||
"strconv"
|
||||
"strings"
|
||||
"sync"
|
||||
@@ -142,6 +143,7 @@ func parseHamQTHSearch(body []byte) (Result, error) {
|
||||
QSLVia: s.QSLVia,
|
||||
Web: s.Web,
|
||||
ImageURL: s.Picture,
|
||||
RDA: rdaRef(s.Oblast, s.District),
|
||||
}
|
||||
r.Lat, _ = strconv.ParseFloat(s.Latitude, 64)
|
||||
r.Lon, _ = strconv.ParseFloat(s.Longitude, 64)
|
||||
@@ -151,6 +153,27 @@ func parseHamQTHSearch(body []byte) (Result, error) {
|
||||
return r, nil
|
||||
}
|
||||
|
||||
// rdaRefRe matches a Russian district reference: two letters, a hyphen, two
|
||||
// digits. Searched for rather than anchored, because the field is filled by
|
||||
// hand and arrives as "KE-29", "KE-29 Kemerovskaya obl." or with stray spaces
|
||||
// depending on which editor the operator used.
|
||||
var rdaRefRe = regexp.MustCompile(`\b([A-Z]{2}-[0-9]{2})\b`)
|
||||
|
||||
// rdaRef extracts a district reference from HamQTH's oblast/district fields.
|
||||
//
|
||||
// Strict about the SHAPE and silent otherwise: a value that is not a district
|
||||
// reference — an oblast name, a postal code, free text — must yield nothing.
|
||||
// Writing it into the award anyway would create a reference no list contains,
|
||||
// which counts for zero and has to be found and removed by hand later.
|
||||
func rdaRef(fields ...string) string {
|
||||
for _, f := range fields {
|
||||
if m := rdaRefRe.FindStringSubmatch(strings.ToUpper(strings.TrimSpace(f))); m != nil {
|
||||
return m[1]
|
||||
}
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (h *HamQTH) get(ctx context.Context, u string) ([]byte, error) {
|
||||
req, err := http.NewRequestWithContext(ctx, "GET", u, nil)
|
||||
if err != nil {
|
||||
@@ -191,15 +214,19 @@ type hamqthSearch struct {
|
||||
AdrCountry string `xml:"adr_country"`
|
||||
USState string `xml:"us_state"`
|
||||
USCounty string `xml:"us_county"`
|
||||
Grid string `xml:"grid"`
|
||||
Latitude string `xml:"latitude"`
|
||||
Longitude string `xml:"longitude"`
|
||||
DXCC string `xml:"adif"` // HamQTH exposes the ADIF/DXCC number under <adif>
|
||||
CQ string `xml:"cq"`
|
||||
ITU string `xml:"itu"`
|
||||
Continent string `xml:"continent"`
|
||||
Email string `xml:"email"`
|
||||
QSLVia string `xml:"qsl_via"`
|
||||
// Oblast is HamQTH's Russian district field; District is its generic one.
|
||||
// Both are read because operators fill whichever their editor showed them.
|
||||
Oblast string `xml:"oblast"`
|
||||
District string `xml:"district"`
|
||||
Grid string `xml:"grid"`
|
||||
Latitude string `xml:"latitude"`
|
||||
Longitude string `xml:"longitude"`
|
||||
DXCC string `xml:"adif"` // HamQTH exposes the ADIF/DXCC number under <adif>
|
||||
CQ string `xml:"cq"`
|
||||
ITU string `xml:"itu"`
|
||||
Continent string `xml:"continent"`
|
||||
Email string `xml:"email"`
|
||||
QSLVia string `xml:"qsl_via"`
|
||||
// AdrName is the full postal name. Many records carry it and no <name> at
|
||||
// all, so building the name from <nick> + <name> silently kept the first
|
||||
// name and dropped the rest.
|
||||
|
||||
Reference in New Issue
Block a user