Mercurial > gemma
diff pkg/wfs/download.go @ 1619:3093bab05c81
WFS downloader: Dump features to stdout for testing purposes.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Tue, 18 Dec 2018 13:26:26 +0100 |
parents | f59550310143 |
children | 943823d03d50 |
line wrap: on
line diff
--- a/pkg/wfs/download.go Tue Dec 18 12:57:43 2018 +0100 +++ b/pkg/wfs/download.go Tue Dec 18 13:26:26 2018 +0100 @@ -94,37 +94,42 @@ return *result.NumberMatched, nil } -func GetFeaturesGET(caps *Capabilities, featureTypeName, outputFormat string) error { +func GetFeaturesGET( + caps *Capabilities, + featureTypeName, + outputFormat string, + sortBy string, +) ([]string, error) { feature := caps.FindFeatureType(featureTypeName) if feature == nil { - return ErrNoSuchFeatureType + return nil, ErrNoSuchFeatureType } op := caps.FindOperation("GetFeature") if op == nil { - return ErrGetFeatureNotSupported + return nil, ErrGetFeatureNotSupported } if op.DCP.HTTP.Get == nil { - return ErrMethodGetNotSupported + return nil, ErrMethodGetNotSupported } getRaw := op.DCP.HTTP.Get.HRef getU, err := url.Parse(getRaw) if err != nil { - return err + return nil, err } // The URL could be relative so resolve against Capabilities URL. if !getU.IsAbs() { base, err := url.Parse(caps.BaseURL) if err != nil { - return err + return nil, err } getU = getU.ResolveReference(base) } if !op.SupportsOutputFormat(outputFormat) { - return ErrOutputFormatNotSupported + return nil, ErrOutputFormatNotSupported } wfsVersion := caps.HighestWFSVersion(WFS2_0_0) @@ -172,6 +177,12 @@ } } + addSortBy := func(v url.Values) { + if sortBy != "" { + v.Set("sortBy", sortBy) + } + } + if supportsPaging { pagedURL := func(ofs, count int) string { v := url.Values{} @@ -187,6 +198,7 @@ v.Set("TYPENAMES", featureTypeName) addNS(v) addOutputFormat(v) + addSortBy(v) q := *getU q.RawQuery = v.Encode() return q.String() @@ -215,14 +227,11 @@ v.Set("TYPENAMES", featureTypeName) addNS(v) addOutputFormat(v) + addSortBy(v) q := *getU q.RawQuery = v.Encode() downloadURLs = []string{q.String()} } - // TODO: Implement me! - - log.Printf("%v\n", downloadURLs) - - return nil + return downloadURLs, nil }