diff cmd/wfs/main.go @ 1596:74413d52c439

Started with WFS Capabilities parser.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Fri, 14 Dec 2018 18:35:09 +0100
parents
children 5e16d1fbe91f
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmd/wfs/main.go	Fri Dec 14 18:35:09 2018 +0100
@@ -0,0 +1,64 @@
+// This is Free Software under GNU Affero General Public License v >= 3.0
+// without warranty, see README.md and license for details.
+//
+// SPDX-License-Identifier: AGPL-3.0-or-later
+// License-Filename: LICENSES/AGPL-3.0.txt
+//
+// Copyright (C) 2018 by via donau
+//   – Österreichische Wasserstraßen-Gesellschaft mbH
+// Software engineering by Intevation GmbH
+//
+// Author(s):
+//  * Sascha L. Teichmann <sascha.teichmann@intevation.de>
+
+package main
+
+import (
+	"bufio"
+	"flag"
+	"fmt"
+	"log"
+	"os"
+
+	"gemma.intevation.de/gemma/pkg/wfs"
+)
+
+func loadCapabilities(fname string) (*wfs.Capabilities, error) {
+	f, err := os.Open(fname)
+	if err != nil {
+		return nil, err
+	}
+	defer f.Close()
+	return wfs.ParseCapabilities(bufio.NewReader(f))
+}
+
+func main() {
+	flag.Parse()
+
+	for _, arg := range flag.Args() {
+		caps, err := loadCapabilities(arg)
+		if err != nil {
+			log.Fatalf("error: %v\n", err)
+		}
+
+		fmt.Printf("title: %s\n", caps.ServiceIdentification.Title)
+		fmt.Printf("type: %s\n", caps.ServiceIdentification.ServiceType)
+		fmt.Printf("version: %s\n", caps.ServiceIdentification.ServiceTypeVersion)
+		for _, operation := range caps.OperationsMetadata.Operations {
+			fmt.Printf("\t%s\n", operation.Name)
+			if operation.DCP.HTTP.Get != nil {
+				fmt.Printf("\t\tGet: %s\n", operation.DCP.HTTP.Get.HRef)
+			}
+			if operation.DCP.HTTP.Post != nil {
+				fmt.Printf("\t\tPost: %s\n", operation.DCP.HTTP.Post.HRef)
+			}
+
+			for _, p := range operation.Parameters {
+				fmt.Printf("\t\tparameter: %s\n", p.Name)
+				for _, av := range p.AllowedValues.AllowedValues {
+					fmt.Printf("\t\t\t%s\n", av.Value)
+				}
+			}
+		}
+	}
+}