Mercurial > gemma
diff pkg/imports/wg.go @ 1812:4910bcfab319
Waterway gauge import: Work around the expected (but nonetheless silly) namespace issues with the SOAP interface.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Wed, 16 Jan 2019 00:51:51 +0100 |
parents | 7ee9bdaac336 |
children | b4b9089c2d79 |
line wrap: on
line diff
--- a/pkg/imports/wg.go Tue Jan 15 19:46:41 2019 +0100 +++ b/pkg/imports/wg.go Wed Jan 16 00:51:51 2019 +0100 @@ -18,6 +18,7 @@ "database/sql" "errors" "log" + "strings" "gemma.intevation.de/gemma/pkg/common" "gemma.intevation.de/gemma/pkg/soap" @@ -73,6 +74,10 @@ func (*WaterwayGauge) CleanUp() error { return nil } +const ( + selectCurrentUserCountrySQL = `SELECT users.current_user_country()` +) + func (wg *WaterwayGauge) Do( ctx context.Context, importID int64, @@ -80,6 +85,24 @@ feedback Feedback, ) (interface{}, error) { + tx, err := conn.BeginTx(ctx, nil) + if err != nil { + return nil, err + } + defer tx.Rollback() + + var country string + err = tx.QueryRowContext(ctx, selectCurrentUserCountrySQL).Scan(&country) + switch { + case err == sql.ErrNoRows: + return nil, errors.New("Cannot figure out user country") + case err != nil: + return nil, err + } + + country = strings.ToUpper(country) + feedback.Info("Using country '%s'.", country) + var auth *soap.BasicAuth if wg.Username != "" { auth = &soap.BasicAuth{ @@ -92,13 +115,11 @@ request := &erdms.GetRisDataXML{ GetRisDataXMLType: &erdms.GetRisDataXMLType{ - Subcode: "AT%", - Funcode: "wtwgag", + Subcode: erdms.NoNS{Text: country + "%"}, + Funcode: erdms.NoNS{Text: "wtwgag"}, }, } - log.Printf("user: %s password: %s\n", wg.Username, wg.Password) - data, err := client.GetRisDataXML(request) if err != nil { @@ -106,7 +127,18 @@ return nil, err } - _ = data + for _, dr := range data.RisdataReturn { + if dr.RisidxCode == nil { + log.Printf("warn: RisidxCode == nil") + continue + } + if dr.Objname.Loc == nil { + log.Printf("warn: Objname == nil") + continue + } + log.Printf("RisidxCode: %s\n", *dr.RisidxCode) + log.Printf("\tObjname: %s\n", *dr.Objname.Loc) + } // TODO: Implement me! return nil, errors.New("Not implemented, yet!")