view 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 source

// 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)
				}
			}
		}
	}
}