Mercurial > gemma
view cmd/wfs/main.go @ 1599:5e16d1fbe91f
WFS Capabilities parser: Parse constraints, too.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Mon, 17 Dec 2018 11:13:11 +0100 |
parents | 74413d52c439 |
children | 658c1ebc1707 |
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) if len(caps.OperationsMetadata.Operations) > 0 { fmt.Println("operations:") 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) } if len(operation.Parameters) > 0 { fmt.Println("\t\tparameters:") for _, p := range operation.Parameters { fmt.Printf("\t\t\tparameter: %s\n", p.Name) for _, av := range p.AllowedValues.Values { fmt.Printf("\t\t\t\t%s\n", av.Value) } } } if len(operation.Constraints) > 0 { fmt.Println("\t\tconstraints:") for _, c := range operation.Constraints { fmt.Printf("\t\t\tname: %s\n", c.Name) if c.DefaultValue != nil { fmt.Printf("\t\t\t\tdefault: %s\n", c.DefaultValue.Value) } if len(c.AllowedValues.Values) > 0 { fmt.Println("\t\t\tallowed values:") for _, av := range c.AllowedValues.Values { fmt.Printf("\t\t\t\t%s", av.Value) } } } } } } if len(caps.OperationsMetadata.Constraints) > 0 { fmt.Println("constraints:") for _, c := range caps.OperationsMetadata.Constraints { fmt.Printf("\tname: %s\n", c.Name) if c.DefaultValue != nil { fmt.Printf("\t\tdefault: %s\n", c.DefaultValue.Value) } if len(c.AllowedValues.Values) > 0 { fmt.Println("\tallowed values:") for _, av := range c.AllowedValues.Values { fmt.Printf("\t\t%s\n", av.Value) } } } } } }