Mercurial > gemma
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) + } + } + } + } +}