changeset 1810:7ee9bdaac336

Waterway gauge import: Added support for username/password.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Tue, 15 Jan 2019 18:09:10 +0100
parents b16a6db0008f
children c21f72775f6b
files pkg/imports/wg.go pkg/soap/erdms/service.go pkg/soap/soap.go
diffstat 3 files changed, 42 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- 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!")
 }
--- 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,
--- 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)