# HG changeset patch # User Sascha L. Teichmann # Date 1547572150 -3600 # Node ID 7ee9bdaac3366edbac399e7993b471cc153bb0e2 # Parent b16a6db0008f2aa46e0d9863c78500a31ffba8ef Waterway gauge import: Added support for username/password. diff -r b16a6db0008f -r 7ee9bdaac336 pkg/imports/wg.go --- a/pkg/imports/wg.go Tue Jan 15 17:02:51 2019 +0100 +++ b/pkg/imports/wg.go Tue Jan 15 18:09:10 2019 +0100 @@ -17,8 +17,11 @@ "context" "database/sql" "errors" + "log" "gemma.intevation.de/gemma/pkg/common" + "gemma.intevation.de/gemma/pkg/soap" + "gemma.intevation.de/gemma/pkg/soap/erdms" ) type WaterwayGauge struct { @@ -76,6 +79,35 @@ conn *sql.Conn, feedback Feedback, ) (interface{}, error) { + + var auth *soap.BasicAuth + if wg.Username != "" { + auth = &soap.BasicAuth{ + Login: wg.Username, + Password: wg.Password, + } + } + + client := erdms.NewRefService(wg.URL, wg.Insecure, auth) + + request := &erdms.GetRisDataXML{ + GetRisDataXMLType: &erdms.GetRisDataXMLType{ + Subcode: "AT%", + Funcode: "wtwgag", + }, + } + + log.Printf("user: %s password: %s\n", wg.Username, wg.Password) + + data, err := client.GetRisDataXML(request) + + if err != nil { + log.Printf("error: %v\n", err) + return nil, err + } + + _ = data + // TODO: Implement me! return nil, errors.New("Not implemented, yet!") } diff -r b16a6db0008f -r 7ee9bdaac336 pkg/soap/erdms/service.go --- a/pkg/soap/erdms/service.go Tue Jan 15 17:02:51 2019 +0100 +++ b/pkg/soap/erdms/service.go Tue Jan 15 18:09:10 2019 +0100 @@ -2422,6 +2422,10 @@ client *soap.SOAPClient } +func NewRefService(url string, tls bool, auth *soap.BasicAuth) RefWeb { + return NewRefWeb(soap.NewSOAPClient(url, tls, auth)) +} + func NewRefWeb(client *soap.SOAPClient) RefWeb { return &refWeb{ client: client, diff -r b16a6db0008f -r 7ee9bdaac336 pkg/soap/soap.go --- a/pkg/soap/soap.go Tue Jan 15 17:02:51 2019 +0100 +++ b/pkg/soap/soap.go Tue Jan 15 18:09:10 2019 +0100 @@ -17,6 +17,7 @@ "bytes" "crypto/tls" "encoding/xml" + "fmt" "io/ioutil" "log" "math/rand" @@ -270,10 +271,15 @@ } client := &http.Client{Transport: tr} + res, err := client.Do(req) if err != nil { return err } + if res.StatusCode < http.StatusOK || res.StatusCode > 299 { + return fmt.Errorf( + "HTTP error: %d (%s)", res.StatusCode, http.StatusText(res.StatusCode)) + } defer res.Body.Close() rawbody, err := ioutil.ReadAll(res.Body)