config

package
v0.48.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 25, 2024 License: MIT Imports: 20 Imported by: 1

Documentation

Index

Constants

View Source
const (
	CookieMaxAge = 60 * 60 * 24
)

Variables

This section is empty.

Functions

This section is empty.

Types

type AdditionalDatasource

type AdditionalDatasource struct {
	// Projection (SRS/CRS) used for the features in this datasource
	// +kubebuilder:validation:Pattern=`^EPSG:\d+$`
	Srs string `yaml:"srs" json:"srs" validate:"required,startswith=EPSG:"`

	// The additional datasource
	Datasource `yaml:",inline" json:",inline"`
}

+kubebuilder:object:generate=true

func (*AdditionalDatasource) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AdditionalDatasource.

func (*AdditionalDatasource) DeepCopyInto

func (in *AdditionalDatasource) DeepCopyInto(out *AdditionalDatasource)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type CollectionEntry3dGeoVolumes

type CollectionEntry3dGeoVolumes struct {
	// Optional basepath to 3D tiles on the tileserver. Defaults to the collection ID.
	// +optional
	TileServerPath *string `yaml:"tileServerPath,omitempty" json:"tileServerPath,omitempty"`

	// URI template for individual 3D tiles.
	// +optional
	URITemplate3dTiles *string `yaml:"uriTemplate3dTiles,omitempty" json:"uriTemplate3dTiles,omitempty" validate:"required_without_all=URITemplateDTM"`

	// Optional URI template for subtrees, only required when "implicit tiling" extension is used.
	// +optional
	URITemplateImplicitTilingSubtree *string `yaml:"uriTemplateImplicitTilingSubtree,omitempty" json:"uriTemplateImplicitTilingSubtree,omitempty"`

	// URI template for digital terrain model (DTM) in Quantized Mesh format, REQUIRED when you want to serve a DTM.
	// +optional
	URITemplateDTM *string `yaml:"uriTemplateDTM,omitempty" json:"uriTemplateDTM,omitempty" validate:"required_without_all=URITemplate3dTiles"`

	// Optional URL to 3D viewer to visualize the given collection of 3D Tiles.
	// +optional
	URL3DViewer *URL `yaml:"3dViewerUrl,omitempty" json:"3dViewerUrl,omitempty"`
}

+kubebuilder:object:generate=true

func (*CollectionEntry3dGeoVolumes) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CollectionEntry3dGeoVolumes.

func (*CollectionEntry3dGeoVolumes) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*CollectionEntry3dGeoVolumes) Has3DTiles

func (gv *CollectionEntry3dGeoVolumes) Has3DTiles() bool

func (*CollectionEntry3dGeoVolumes) HasDTM

func (gv *CollectionEntry3dGeoVolumes) HasDTM() bool

type CollectionEntryFeatures

type CollectionEntryFeatures struct {
	// Optional way to explicitly map a collection ID to the underlying table in the datasource.
	// +optional
	TableName *string `yaml:"tableName,omitempty" json:"tableName,omitempty"`

	// Optional collection specific datasources. Mutually exclusive with top-level defined datasources.
	// +optional
	Datasources *Datasources `yaml:"datasources,omitempty" json:"datasources,omitempty"`

	// Filters available for this collection
	// +optional
	Filters FeatureFilters `yaml:"filters,omitempty" json:"filters,omitempty"`
}

+kubebuilder:object:generate=true

func (*CollectionEntryFeatures) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CollectionEntryFeatures.

func (*CollectionEntryFeatures) DeepCopyInto

func (in *CollectionEntryFeatures) DeepCopyInto(out *CollectionEntryFeatures)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type CollectionEntryTiles

type CollectionEntryTiles struct {
}

+kubebuilder:object:generate=true

func (*CollectionEntryTiles) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CollectionEntryTiles.

func (*CollectionEntryTiles) DeepCopyInto

func (in *CollectionEntryTiles) DeepCopyInto(out *CollectionEntryTiles)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Config

type Config struct {
	// Version of the API. When releasing a new version which contains backwards-incompatible changes, a new major version must be released.
	Version string `yaml:"version" json:"version" validate:"required,semver"`

	// Human friendly title of the API. Don't include "OGC API" in the title, this is added automatically.
	Title string `yaml:"title" json:"title"  validate:"required"`

	// Shorted title / abbreviation describing the API.
	ServiceIdentifier string `yaml:"serviceIdentifier"  json:"serviceIdentifier" validate:"required"`

	// Human friendly description of the API and dataset.
	Abstract string `yaml:"abstract" json:"abstract" validate:"required"`

	// Licensing term that apply to this API and dataset
	License License `yaml:"license" json:"license" validate:"required"`

	// The base URL - that's the part until the OGC API landing page - under which this API is served
	BaseURL URL `yaml:"baseUrl" json:"baseUrl" validate:"required"`

	// Optional reference to a catalog/portal/registry that lists all datasets, not just this one
	DatasetCatalogURL URL `yaml:"datasetCatalogUrl" json:"datasetCatalogUrl"`

	// The languages/translations to offer, valid options are Dutch (nl) and English (en). Dutch is the default.
	AvailableLanguages []Language `yaml:"availableLanguages" json:"availableLanguages"`

	// Define which OGC API building blocks this API supports
	OgcAPI OgcAPI `yaml:"ogcApi" json:"ogcApi" validate:"required"`

	// Reference to a PNG image to use a thumbnail on the landing page.
	// The full path is constructed by appending Resources + Thumbnail.
	// +optional
	Thumbnail *string `yaml:"thumbnail,omitempty" json:"thumbnail,omitempty"`

	// Keywords to make this API beter discoverable
	// +optional
	Keywords []string `yaml:"keywords,omitempty" json:"keywords,omitempty"`

	// Moment in time when the dataset was last updated
	// +optional
	// +kubebuilder:validation:Type=string
	// +kubebuilder:validation:Format="date-time"
	LastUpdated *string `yaml:"lastUpdated,omitempty" json:"lastUpdated,omitempty" validate:"omitempty,datetime=2006-01-02T15:04:05Z"`

	// Who updated the dataset
	// +optional
	LastUpdatedBy string `yaml:"lastUpdatedBy,omitempty" json:"lastUpdatedBy,omitempty"`

	// Available support channels
	// +optional
	Support *Support `yaml:"support,omitempty" json:"support,omitempty"`

	// Key/value pairs to add extra information to the landing page
	// +optional
	DatasetDetails []DatasetDetail `yaml:"datasetDetails,omitempty" json:"datasetDetails,omitempty"`

	// Location where resources (e.g. thumbnails) specific to the given dataset are hosted
	// +optional
	Resources *Resources `yaml:"resources,omitempty" json:"resources,omitempty"`
}

+kubebuilder:object:generate=true

func NewConfig

func NewConfig(configFile string) (*Config, error)

NewConfig read YAML config file, required to start GoKoala

func (*Config) AllCollections

func (c *Config) AllCollections() GeoSpatialCollections

func (*Config) CookieMaxAge

func (c *Config) CookieMaxAge() int

func (*Config) DeepCopy

func (in *Config) DeepCopy() *Config

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Config.

func (*Config) DeepCopyInto

func (in *Config) DeepCopyInto(out *Config)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Config) HasCollections

func (c *Config) HasCollections() bool

func (*Config) UnmarshalJSON

func (c *Config) UnmarshalJSON(b []byte) error

func (*Config) UnmarshalYAML

func (c *Config) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML hooks into unmarshalling to set defaults and validate config

type DatasetDetail

type DatasetDetail struct {
	// Arbitrary name to add extra information to the landing page
	Name string `yaml:"name" json:"name"`

	// Arbitrary value associated with the given name
	Value string `yaml:"value" json:"value"`
}

+kubebuilder:object:generate=true

func (*DatasetDetail) DeepCopy

func (in *DatasetDetail) DeepCopy() *DatasetDetail

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DatasetDetail.

func (*DatasetDetail) DeepCopyInto

func (in *DatasetDetail) DeepCopyInto(out *DatasetDetail)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Datasource

type Datasource struct {
	// GeoPackage to get the features from.
	// +optional
	GeoPackage *GeoPackage `yaml:"geopackage,omitempty" json:"geopackage,omitempty" validate:"required_without_all=PostGIS"`

	// PostGIS database to get the features from (not implemented yet).
	// +optional
	PostGIS *PostGIS `yaml:"postgis,omitempty" json:"postgis,omitempty" validate:"required_without_all=GeoPackage"`
}

+kubebuilder:object:generate=true

func (*Datasource) DeepCopy

func (in *Datasource) DeepCopy() *Datasource

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Datasource.

func (*Datasource) DeepCopyInto

func (in *Datasource) DeepCopyInto(out *Datasource)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Datasources

type Datasources struct {
	// Features should always be available in WGS84 (according to spec).
	// This specifies the datasource to be used for features in the WGS84 projection
	DefaultWGS84 Datasource `yaml:"defaultWGS84" json:"defaultWGS84" validate:"required"`

	// One or more additional datasources for features in other projections. GoKoala doesn't do
	// any on-the-fly reprojection so additional datasources need to be reprojected ahead of time.
	Additional []AdditionalDatasource `yaml:"additional" json:"additional" validate:"dive"`
}

+kubebuilder:object:generate=true

func (*Datasources) DeepCopy

func (in *Datasources) DeepCopy() *Datasources

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Datasources.

func (*Datasources) DeepCopyInto

func (in *Datasources) DeepCopyInto(out *Datasources)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Duration

type Duration struct {
	time.Duration
}

Duration Custom time.Duration compatible with YAML and JSON (un)marshalling and kubebuilder. (Already supported in yaml/v3 but not encoding/json.)

+kubebuilder:validation:Type=string +kubebuilder:validation:Format=duration

func (*Duration) DeepCopy

func (d *Duration) DeepCopy() *Duration

DeepCopy copy the receiver, create a new Duration.

func (*Duration) DeepCopyInto

func (d *Duration) DeepCopyInto(out *Duration)

DeepCopyInto copy the receiver, write into out. in must be non-nil.

func (Duration) MarshalJSON

func (d Duration) MarshalJSON() ([]byte, error)

MarshalJSON turn duration tag into JSON Value instead of pointer receiver because only that way it can be used for both.

func (Duration) MarshalYAML

func (d Duration) MarshalYAML() (interface{}, error)

MarshalYAML turn duration tag into YAML Value instead of pointer receiver because only that way it can be used for both.

func (*Duration) UnmarshalJSON

func (d *Duration) UnmarshalJSON(b []byte) error

func (*Duration) UnmarshalYAML

func (d *Duration) UnmarshalYAML(unmarshal func(any) error) error

type Extent

type Extent struct {
	// Projection (SRS/CRS) to be used. When none is provided WGS84 (http://www.opengis.net/def/crs/OGC/1.3/CRS84) is used.
	// +optional
	// +kubebuilder:validation:Pattern=`^EPSG:\d+$`
	Srs string `yaml:"srs" json:"srs" validate:"omitempty,startswith=EPSG:"`

	// Geospatial extent
	Bbox []string `yaml:"bbox" json:"bbox"`

	// Temporal extent
	// +optional
	// +kubebuilder:validation:MinItems=2
	// +kubebuilder:validation:MaxItems=2
	Interval []string `yaml:"interval,omitempty" json:"interval,omitempty" validate:"omitempty,len=2"`
}

+kubebuilder:object:generate=true

func (*Extent) DeepCopy

func (in *Extent) DeepCopy() *Extent

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Extent.

func (*Extent) DeepCopyInto

func (in *Extent) DeepCopyInto(out *Extent)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type FeatureFilters

type FeatureFilters struct {
	// OAF Part 1: filter on feature properties
	// https://docs.ogc.org/is/17-069r4/17-069r4.html#_parameters_for_filtering_on_feature_properties
	//
	// +optional
	Properties []PropertyFilter `yaml:"properties,omitempty" json:"properties,omitempty" validate:"dive"`
}

+kubebuilder:object:generate=true

func (*FeatureFilters) DeepCopy

func (in *FeatureFilters) DeepCopy() *FeatureFilters

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FeatureFilters.

func (*FeatureFilters) DeepCopyInto

func (in *FeatureFilters) DeepCopyInto(out *FeatureFilters)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type GeoPackage

type GeoPackage struct {
	// Settings to read a GeoPackage from local disk
	// +optional
	Local *GeoPackageLocal `yaml:"local,omitempty" json:"local,omitempty" validate:"required_without_all=Cloud"`

	// Settings to read a GeoPackage as a Cloud-Backed SQLite database
	// +optional
	Cloud *GeoPackageCloud `yaml:"cloud,omitempty" json:"cloud,omitempty" validate:"required_without_all=Local"`
}

+kubebuilder:object:generate=true

func (*GeoPackage) DeepCopy

func (in *GeoPackage) DeepCopy() *GeoPackage

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GeoPackage.

func (*GeoPackage) DeepCopyInto

func (in *GeoPackage) DeepCopyInto(out *GeoPackage)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type GeoPackageCloud

type GeoPackageCloud struct {
	// GeoPackageCommon shared config between local and cloud GeoPackage
	GeoPackageCommon `yaml:",inline" json:",inline"`

	// Reference to the cloud storage (either azure or google at the moment), e.g:
	// - azure?emulator=127.0.0.1:10000&sas=0
	// - google
	Connection string `yaml:"connection" json:"connection" validate:"required"`

	// Username of the storage account, e.g: devstoreaccount1 when using Azurite
	User string `yaml:"user" json:"user" validate:"required"`

	// Some kind of credential like a password or key to authenticate with the storage backend, e.g:
	// 'Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==' when using Azurite
	Auth string `yaml:"auth" json:"auth" validate:"required"`

	// Container/bucket on the storage account
	Container string `yaml:"container" json:"container" validate:"required"`

	// Filename of the GeoPackage
	File string `yaml:"file" json:"file" validate:"required"`

	// Local cache of fetched blocks from cloud storage
	// +optional
	Cache GeoPackageCloudCache `yaml:"cache,omitempty" json:"cache,omitempty"`

	// Only for debug purposes! When true all HTTP requests executed by sqlite to cloud object storage are logged to stdout
	// +kubebuilder:default=false
	// +optional
	LogHTTPRequests bool `yaml:"logHttpRequests,omitempty" json:"logHttpRequests,omitempty" default:"false"`
}

+kubebuilder:object:generate=true

func (*GeoPackageCloud) CacheDir

func (gc *GeoPackageCloud) CacheDir() (string, error)

func (*GeoPackageCloud) DeepCopy

func (in *GeoPackageCloud) DeepCopy() *GeoPackageCloud

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GeoPackageCloud.

func (*GeoPackageCloud) DeepCopyInto

func (in *GeoPackageCloud) DeepCopyInto(out *GeoPackageCloud)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type GeoPackageCloudCache

type GeoPackageCloudCache struct {
	// Optional path to directory for caching cloud-backed GeoPackage blocks, when omitted a temp dir will be used.
	// +optional
	Path *string `yaml:"path,omitempty" json:"path,omitempty" validate:"omitempty,dirpath|filepath"`

	// Max size of the local cache. Accepts human-readable size such as 100Mb, 4Gb, 1Tb, etc. When omitted 1Gb is used.
	// +kubebuilder:default="1Gb"
	// +optional
	MaxSize string `yaml:"maxSize,omitempty" json:"maxSize,omitempty" default:"1Gb"`

	// When true a warm-up query is executed on startup which aims to fill the local cache. Does increase startup time.
	// +kubebuilder:default=false
	// +optional
	WarmUp bool `yaml:"warmUp,omitempty" json:"warmUp,omitempty" default:"false"`
}

+kubebuilder:object:generate=true

func (*GeoPackageCloudCache) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GeoPackageCloudCache.

func (*GeoPackageCloudCache) DeepCopyInto

func (in *GeoPackageCloudCache) DeepCopyInto(out *GeoPackageCloudCache)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*GeoPackageCloudCache) MaxSizeAsBytes

func (cache *GeoPackageCloudCache) MaxSizeAsBytes() (int64, error)

type GeoPackageCommon

type GeoPackageCommon struct {
	// Feature id column name
	// +kubebuilder:default="fid"
	// +optional
	Fid string `yaml:"fid,omitempty" json:"fid,omitempty" validate:"required" default:"fid"`

	// Optional timeout after which queries are canceled
	// +kubebuilder:default="15s"
	// +optional
	QueryTimeout Duration `yaml:"queryTimeout,omitempty" json:"queryTimeout,omitempty" validate:"required" default:"15s"`

	// When the number of features in a bbox stay within the given value use an RTree index, otherwise use a BTree index
	// +kubebuilder:default=30000
	// +optional
	MaxBBoxSizeToUseWithRTree int `yaml:"maxBBoxSizeToUseWithRTree,omitempty" json:"maxBBoxSizeToUseWithRTree,omitempty" validate:"required" default:"30000"`
}

+kubebuilder:object:generate=true

func (*GeoPackageCommon) DeepCopy

func (in *GeoPackageCommon) DeepCopy() *GeoPackageCommon

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GeoPackageCommon.

func (*GeoPackageCommon) DeepCopyInto

func (in *GeoPackageCommon) DeepCopyInto(out *GeoPackageCommon)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type GeoPackageLocal

type GeoPackageLocal struct {
	// GeoPackageCommon shared config between local and cloud GeoPackage
	GeoPackageCommon `yaml:",inline" json:",inline"`

	// Location of GeoPackage on disk
	File string `yaml:"file" json:"file" validate:"file"`
}

+kubebuilder:object:generate=true

func (*GeoPackageLocal) DeepCopy

func (in *GeoPackageLocal) DeepCopy() *GeoPackageLocal

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GeoPackageLocal.

func (*GeoPackageLocal) DeepCopyInto

func (in *GeoPackageLocal) DeepCopyInto(out *GeoPackageLocal)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type GeoSpatialCollection

type GeoSpatialCollection struct {
	// Unique ID of the collection
	ID string `yaml:"id" validate:"required" json:"id"`

	// Metadata describing the collection contents
	// +optional
	Metadata *GeoSpatialCollectionMetadata `yaml:"metadata,omitempty" json:"metadata,omitempty"`

	// 3D GeoVolumes specific to this collection
	// +optional
	GeoVolumes *CollectionEntry3dGeoVolumes `yaml:",inline" json:",inline"`

	// Tiles specific to this collection
	// +optional
	Tiles *CollectionEntryTiles `yaml:",inline" json:",inline"`

	// Features specific to this collection
	// +optional
	Features *CollectionEntryFeatures `yaml:",inline" json:",inline"`
}

+kubebuilder:object:generate=true

func (*GeoSpatialCollection) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GeoSpatialCollection.

func (*GeoSpatialCollection) DeepCopyInto

func (in *GeoSpatialCollection) DeepCopyInto(out *GeoSpatialCollection)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (GeoSpatialCollection) MarshalJSON added in v0.43.7

func (c GeoSpatialCollection) MarshalJSON() ([]byte, error)

MarshalJSON custom because inlining only works on embedded structs. Value instead of pointer receiver because only that way it can be used for both.

func (*GeoSpatialCollection) UnmarshalJSON added in v0.43.7

func (c *GeoSpatialCollection) UnmarshalJSON(b []byte) error

UnmarshalJSON parses a string to GeoSpatialCollection

type GeoSpatialCollectionJSON added in v0.43.7

type GeoSpatialCollectionJSON struct {
	ID                           string                        `json:"id"`
	Metadata                     *GeoSpatialCollectionMetadata `json:"metadata,omitempty"`
	*CollectionEntry3dGeoVolumes `json:",inline"`
	*CollectionEntryTiles        `json:",inline"`
	*CollectionEntryFeatures     `json:",inline"`
}

type GeoSpatialCollectionMetadata

type GeoSpatialCollectionMetadata struct {
	// Human friendly title of this collection. When no title is specified the collection ID is used.
	// +optional
	Title *string `yaml:"title,omitempty" json:"title,omitempty"`

	// Describes the content of this collection
	Description *string `yaml:"description" json:"description" validate:"required"`

	// Reference to a PNG image to use a thumbnail on the collections.
	// The full path is constructed by appending Resources + Thumbnail.
	// +optional
	Thumbnail *string `yaml:"thumbnail,omitempty" json:"thumbnail,omitempty"`

	// Keywords to make this collection beter discoverable
	// +optional
	Keywords []string `yaml:"keywords,omitempty" json:"keywords,omitempty"`

	// Moment in time when the collection was last updated
	//
	// +optional
	// +kubebuilder:validation:Type=string
	// +kubebuilder:validation:Format="date-time"
	LastUpdated *string `yaml:"lastUpdated,omitempty" json:"lastUpdated,omitempty" validate:"omitempty,datetime=2006-01-02T15:04:05Z"`

	// Who updated this collection
	// +optional
	LastUpdatedBy string `yaml:"lastUpdatedBy,omitempty" json:"lastUpdatedBy,omitempty"`

	// Fields in the datasource to be used in temporal queries
	// +optional
	TemporalProperties *TemporalProperties `yaml:"temporalProperties,omitempty" json:"temporalProperties,omitempty" validate:"omitempty,required_with=Extent.Interval"`

	// Extent of the collection, both geospatial and/or temporal
	// +optional
	Extent *Extent `yaml:"extent,omitempty" json:"extent,omitempty"`

	// The CRS identifier which the features are originally stored, meaning no CRS transformations are applied when features are retrieved in this CRS.
	// WGS84 is the default storage CRS.
	//
	// +kubebuilder:default="http://www.opengis.net/def/crs/OGC/1.3/CRS84"
	// +kubebuilder:validation:Pattern=`^http:\/\/www\.opengis\.net\/def\/crs\/.*$`
	// +optional
	StorageCrs *string `` /* 163-byte string literal not displayed */
}

+kubebuilder:object:generate=true

func (*GeoSpatialCollectionMetadata) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GeoSpatialCollectionMetadata.

func (*GeoSpatialCollectionMetadata) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type GeoSpatialCollections

type GeoSpatialCollections []GeoSpatialCollection

func (GeoSpatialCollections) ContainsID

func (g GeoSpatialCollections) ContainsID(id string) bool

ContainsID check if given collection - by ID - exists

func (GeoSpatialCollections) Unique

Unique lists all unique GeoSpatialCollections (no duplicate IDs), return results in alphabetic order

type Language

type Language struct {
	language.Tag
}

Language represents a BCP 47 language tag. +kubebuilder:validation:Type=string

func (*Language) DeepCopy

func (l *Language) DeepCopy() *Language

DeepCopy copy the receiver, create a new Language.

func (*Language) DeepCopyInto

func (l *Language) DeepCopyInto(out *Language)

DeepCopyInto copy the receiver, write into out. in must be non-nil.

func (Language) MarshalJSON

func (l Language) MarshalJSON() ([]byte, error)

MarshalJSON turn language tag into JSON Value instead of pointer receiver because only that way it can be used for both.

func (*Language) UnmarshalJSON

func (l *Language) UnmarshalJSON(b []byte) error

UnmarshalJSON turn JSON into Language

type License

type License struct {
	// Name of the license, e.g. MIT, CC0, etc
	Name string `yaml:"name" json:"name" validate:"required"`

	// URL to license text on the web
	URL URL `yaml:"url" json:"url" validate:"required"`
}

+kubebuilder:object:generate=true

func (*License) DeepCopy

func (in *License) DeepCopy() *License

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new License.

func (*License) DeepCopyInto

func (in *License) DeepCopyInto(out *License)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Limit

type Limit struct {
	// Number of features to return by default.
	// +kubebuilder:default=10
	// +kubebuilder:validation:Minimum=2
	// +optional
	Default int `yaml:"default,omitempty" json:"default,omitempty" validate:"gt=1" default:"10"`

	// Max number of features to return. Should be larger than 100 since the HTML interface always offers a 100 limit option.
	// +kubebuilder:default=1000
	// +kubebuilder:validation:Minimum=100
	// +optional
	Max int `yaml:"max,omitempty" json:"max,omitempty" validate:"gte=100" default:"1000"`
}

+kubebuilder:object:generate=true

func (*Limit) DeepCopy

func (in *Limit) DeepCopy() *Limit

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Limit.

func (*Limit) DeepCopyInto

func (in *Limit) DeepCopyInto(out *Limit)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type OgcAPI

type OgcAPI struct {
	// Enable when this API should offer OGC API 3D GeoVolumes. This includes OGC 3D Tiles.
	// +optional
	GeoVolumes *OgcAPI3dGeoVolumes `yaml:"3dgeovolumes,omitempty" json:"3dgeovolumes,omitempty"`

	// Enable when this API should offer OGC API Tiles. This also requires OGC API Styles.
	// +optional
	Tiles *OgcAPITiles `yaml:"tiles,omitempty" json:"tiles,omitempty" validate:"required_with=Styles"`

	// Enable when this API should offer OGC API Styles.
	// +optional
	Styles *OgcAPIStyles `yaml:"styles,omitempty" json:"styles,omitempty"`

	// Enable when this API should offer OGC API Features.
	// +optional
	Features *OgcAPIFeatures `yaml:"features,omitempty" json:"features,omitempty"`

	// Enable when this API should offer OGC API Processes.
	// +optional
	Processes *OgcAPIProcesses `yaml:"processes,omitempty" json:"processes,omitempty"`
}

+kubebuilder:object:generate=true

func (*OgcAPI) DeepCopy

func (in *OgcAPI) DeepCopy() *OgcAPI

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OgcAPI.

func (*OgcAPI) DeepCopyInto

func (in *OgcAPI) DeepCopyInto(out *OgcAPI)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type OgcAPI3dGeoVolumes

type OgcAPI3dGeoVolumes struct {
	// Reference to the server (or object storage) hosting the 3D Tiles
	TileServer URL `yaml:"tileServer" json:"tileServer" validate:"required"`

	// Collections to be served as 3D GeoVolumes
	Collections GeoSpatialCollections `yaml:"collections" json:"collections"`

	// Whether JSON responses will be validated against the OpenAPI spec
	// since it has significant performance impact when dealing with large JSON payloads.
	//
	// +kubebuilder:default=true
	// +optional
	ValidateResponses *bool `yaml:"validateResponses,omitempty" json:"validateResponses,omitempty" default:"true"` // ptr due to https://github.com/creasty/defaults/issues/49
}

+kubebuilder:object:generate=true

func (*OgcAPI3dGeoVolumes) DeepCopy

func (in *OgcAPI3dGeoVolumes) DeepCopy() *OgcAPI3dGeoVolumes

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OgcAPI3dGeoVolumes.

func (*OgcAPI3dGeoVolumes) DeepCopyInto

func (in *OgcAPI3dGeoVolumes) DeepCopyInto(out *OgcAPI3dGeoVolumes)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type OgcAPIFeatures

type OgcAPIFeatures struct {
	// Basemap to use in embedded viewer on the HTML pages.
	// +kubebuilder:default="OSM"
	// +kubebuilder:validation:Enum=OSM;BRT
	// +optional
	Basemap string `yaml:"basemap,omitempty" json:"basemap,omitempty" default:"OSM" validate:"oneof=OSM BRT"`

	// Collections to be served as features through this API
	Collections GeoSpatialCollections `yaml:"collections" json:"collections" validate:"required,dive"`

	// Limits the amount of features to retrieve with a single call
	// +optional
	Limit Limit `yaml:"limit,omitempty" json:"limit,omitempty"`

	// One or more datasources to get the features from (geopackages, postgis, etc).
	// Optional since you can also define datasources at the collection level
	// +optional
	Datasources *Datasources `yaml:"datasources,omitempty" json:"datasources,omitempty"`

	// Whether GeoJSON/JSON-FG responses will be validated against the OpenAPI spec
	// since it has significant performance impact when dealing with large JSON payloads.
	//
	// +kubebuilder:default=true
	// +optional
	ValidateResponses *bool `yaml:"validateResponses,omitempty" json:"validateResponses,omitempty" default:"true"` // ptr due to https://github.com/creasty/defaults/issues/49
}

+kubebuilder:object:generate=true

func (*OgcAPIFeatures) DeepCopy

func (in *OgcAPIFeatures) DeepCopy() *OgcAPIFeatures

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OgcAPIFeatures.

func (*OgcAPIFeatures) DeepCopyInto

func (in *OgcAPIFeatures) DeepCopyInto(out *OgcAPIFeatures)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*OgcAPIFeatures) ProjectionsForCollection

func (oaf *OgcAPIFeatures) ProjectionsForCollection(collectionID string) []string

func (*OgcAPIFeatures) ProjectionsForCollections

func (oaf *OgcAPIFeatures) ProjectionsForCollections() []string

func (*OgcAPIFeatures) PropertyFiltersForCollection

func (oaf *OgcAPIFeatures) PropertyFiltersForCollection(collectionID string) []PropertyFilter

type OgcAPIProcesses

type OgcAPIProcesses struct {
	// Enable to advertise dismiss operations on the conformance page
	SupportsDismiss bool `yaml:"supportsDismiss" json:"supportsDismiss"`

	// Enable to advertise callback operations on the conformance page
	SupportsCallback bool `yaml:"supportsCallback" json:"supportsCallback"`

	// Reference to an external service implementing the process API. GoKoala acts only as a proxy for OGC API Processes.
	ProcessesServer URL `yaml:"processesServer" json:"processesServer" validate:"required"`
}

+kubebuilder:object:generate=true

func (*OgcAPIProcesses) DeepCopy

func (in *OgcAPIProcesses) DeepCopy() *OgcAPIProcesses

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OgcAPIProcesses.

func (*OgcAPIProcesses) DeepCopyInto

func (in *OgcAPIProcesses) DeepCopyInto(out *OgcAPIProcesses)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type OgcAPIStyles

type OgcAPIStyles struct {
	// ID of the style to use a default
	Default string `yaml:"default" json:"default" validate:"required"`

	// Location on disk where the styles are hosted
	StylesDir string `yaml:"stylesDir" json:"stylesDir" validate:"required,dirpath|filepath"`

	// Styles exposed though this API
	SupportedStyles []Style `yaml:"supportedStyles" json:"supportedStyles" validate:"required,dive"`
}

+kubebuilder:object:generate=true

func (*OgcAPIStyles) DeepCopy

func (in *OgcAPIStyles) DeepCopy() *OgcAPIStyles

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OgcAPIStyles.

func (*OgcAPIStyles) DeepCopyInto

func (in *OgcAPIStyles) DeepCopyInto(out *OgcAPIStyles)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type OgcAPITiles

type OgcAPITiles struct {
	// Reference to the server (or object storage) hosting the tiles
	TileServer URL `yaml:"tileServer" json:"tileServer" validate:"required"`

	// Could be 'vector' and/or 'raster' to indicate the types of tiles offered
	Types []TilesType `yaml:"types" json:"types" validate:"required"`

	// Specifies in what projections (SRS/CRS) the tiles are offered
	SupportedSrs []SupportedSrs `yaml:"supportedSrs" json:"supportedSrs" validate:"required,dive"`

	// Optional template to the vector tiles on the tileserver. Defaults to {tms}/{z}/{x}/{y}.pbf.
	// +optional
	URITemplateTiles *string `yaml:"uriTemplateTiles,omitempty" json:"uriTemplateTiles,omitempty"`

	// The collections to offer as tiles. When no collection is specified the tiles are hosted at the root of the API (/tiles endpoint).
	// +optional
	Collections GeoSpatialCollections `yaml:"collections,omitempty" json:"collections,omitempty"`
}

+kubebuilder:object:generate=true

func (*OgcAPITiles) DeepCopy

func (in *OgcAPITiles) DeepCopy() *OgcAPITiles

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OgcAPITiles.

func (*OgcAPITiles) DeepCopyInto

func (in *OgcAPITiles) DeepCopyInto(out *OgcAPITiles)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type PostGIS

type PostGIS struct {
}

+kubebuilder:object:generate=true

func (*PostGIS) DeepCopy

func (in *PostGIS) DeepCopy() *PostGIS

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PostGIS.

func (*PostGIS) DeepCopyInto

func (in *PostGIS) DeepCopyInto(out *PostGIS)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type PropertyFilter

type PropertyFilter struct {
	// Needs to match with a column name in the feature table (in the configured datasource)
	Name string `yaml:"name" json:"name" validate:"required"`

	// Explains this property filter
	// +kubebuilder:default="Filter features by this property"
	// +optional
	Description string `yaml:"description,omitempty" json:"description,omitempty" default:"Filter features by this property"`
}

+kubebuilder:object:generate=true

func (*PropertyFilter) DeepCopy

func (in *PropertyFilter) DeepCopy() *PropertyFilter

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PropertyFilter.

func (*PropertyFilter) DeepCopyInto

func (in *PropertyFilter) DeepCopyInto(out *PropertyFilter)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Resources

type Resources struct {
	// Location where resources (e.g. thumbnails) specific to the given dataset are hosted. This is optional if Directory is set
	// +optional
	URL *URL `yaml:"url,omitempty" json:"url,omitempty" validate:"required_without=Directory,omitempty"`

	// // Location where resources (e.g. thumbnails) specific to the given dataset are hosted. This is optional if URL is set
	// +optional
	Directory *string `yaml:"directory,omitempty" json:"directory,omitempty" validate:"required_without=URL,omitempty,dirpath|filepath"`
}

+kubebuilder:object:generate=true

func (*Resources) DeepCopy

func (in *Resources) DeepCopy() *Resources

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Resources.

func (*Resources) DeepCopyInto

func (in *Resources) DeepCopyInto(out *Resources)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Style

type Style struct {
	// Unique ID of this style
	ID string `yaml:"id" json:"id" validate:"required"`

	// Human-friendly name of this style
	Title string `yaml:"title" json:"title" validate:"required"`

	// Explains what is visualized by this style
	// +optional
	Description *string `yaml:"description,omitempty" json:"description,omitempty"`

	// Keywords to make this style better discoverable
	// +optional
	Keywords []string `yaml:"keywords,omitempty" json:"keywords,omitempty"`

	// Moment in time when the style was last updated
	// +optional
	// +kubebuilder:validation:Type=string
	// +kubebuilder:validation:Format="date-time"
	LastUpdated *string `yaml:"lastUpdated,omitempty" json:"lastUpdated,omitempty" validate:"omitempty,datetime=2006-01-02T15:04:05Z"`

	// Optional version of this style
	// +optional
	Version *string `yaml:"version,omitempty" json:"version,omitempty"`

	// Reference to a PNG image to use a thumbnail on the style metadata page.
	// The full path is constructed by appending Resources + Thumbnail.
	// +optional
	Thumbnail *string `yaml:"thumbnail,omitempty" json:"thumbnail,omitempty"`

	// This style is offered in the following formats
	Formats []StyleFormat `yaml:"formats" json:"formats" validate:"required,dive"`
}

+kubebuilder:object:generate=true

func (*Style) DeepCopy

func (in *Style) DeepCopy() *Style

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Style.

func (*Style) DeepCopyInto

func (in *Style) DeepCopyInto(out *Style)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type StyleFormat

type StyleFormat struct {
	// Name of the format
	// +kubebuilder:default="mapbox"
	// +optional
	Format string `yaml:"format,omitempty" json:"format,omitempty" default:"mapbox" validate:"required,oneof=mapbox sld10"`
}

+kubebuilder:object:generate=true

func (*StyleFormat) DeepCopy

func (in *StyleFormat) DeepCopy() *StyleFormat

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StyleFormat.

func (*StyleFormat) DeepCopyInto

func (in *StyleFormat) DeepCopyInto(out *StyleFormat)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Support

type Support struct {
	// Name of the support organization
	Name string `yaml:"name" json:"name" validate:"required"`

	// URL to external support webpage
	// +kubebuilder:validation:Type=string
	URL URL `yaml:"url" json:"url" validate:"required"`

	// Email for support questions
	// +optional
	Email string `yaml:"email,omitempty" json:"email,omitempty" validate:"omitempty,email"`
}

+kubebuilder:object:generate=true

func (*Support) DeepCopy

func (in *Support) DeepCopy() *Support

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Support.

func (*Support) DeepCopyInto

func (in *Support) DeepCopyInto(out *Support)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SupportedSrs

type SupportedSrs struct {
	// Projection (SRS/CRS) used
	// +kubebuilder:validation:Pattern=`^EPSG:\d+$`
	Srs string `yaml:"srs" json:"srs" validate:"required,startswith=EPSG:"`

	// Available zoom levels
	ZoomLevelRange ZoomLevelRange `yaml:"zoomLevelRange" json:"zoomLevelRange" validate:"required"`
}

+kubebuilder:object:generate=true

func (*SupportedSrs) DeepCopy

func (in *SupportedSrs) DeepCopy() *SupportedSrs

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SupportedSrs.

func (*SupportedSrs) DeepCopyInto

func (in *SupportedSrs) DeepCopyInto(out *SupportedSrs)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type TemporalProperties

type TemporalProperties struct {
	// Name of field in datasource to be used in temporal queries as the start date
	StartDate string `yaml:"startDate" json:"startDate" validate:"required"`

	// Name of field in datasource to be used in temporal queries as the end date
	EndDate string `yaml:"endDate" json:"endDate" validate:"required"`
}

+kubebuilder:object:generate=true

func (*TemporalProperties) DeepCopy

func (in *TemporalProperties) DeepCopy() *TemporalProperties

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TemporalProperties.

func (*TemporalProperties) DeepCopyInto

func (in *TemporalProperties) DeepCopyInto(out *TemporalProperties)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type TilesType added in v0.43.4

type TilesType string

+kubebuilder:validation:Enum=raster;vector

const (
	TilesTypeRaster TilesType = "raster"
	TilesTypeVector TilesType = "vector"
)

type URL

type URL struct {
	// This is a pointer so the wrapper can directly be used in templates, e.g.: {{ .Config.BaseURL }}
	// Otherwise you would need .String() or template.URL(). (Might be a bug.)
	*url.URL
}

URL Custom net.URL compatible with YAML and JSON (un)marshalling and kubebuilder. In addition, it also removes trailing slash if present, so we can easily append a longer path without having to worry about double slashes.

Allow only http/https URLs or environment variables like ${FOOBAR} +kubebuilder:validation:Pattern=`^(https?://.+)|(\$\{.+\})` +kubebuilder:validation:Type=string

func (*URL) DeepCopy

func (u *URL) DeepCopy() *URL

DeepCopy copies the receiver, creates a new URL.

func (*URL) DeepCopyInto

func (u *URL) DeepCopyInto(out *URL)

DeepCopyInto copies the receiver, writes into out.

func (URL) MarshalJSON

func (u URL) MarshalJSON() ([]byte, error)

MarshalJSON turns URL into JSON. Value instead of pointer receiver because only that way it can be used for both.

func (URL) MarshalYAML

func (u URL) MarshalYAML() (interface{}, error)

MarshalYAML turns URL into YAML. Value instead of pointer receiver because only that way it can be used for both.

func (*URL) UnmarshalJSON

func (u *URL) UnmarshalJSON(b []byte) error

UnmarshalJSON parses a string to URL and also removes trailing slash if present, so we can easily append a longer path without having to worry about double slashes.

func (*URL) UnmarshalYAML

func (u *URL) UnmarshalYAML(unmarshal func(any) error) error

UnmarshalYAML parses a string to URL and also removes trailing slash if present, so we can easily append a longer path without having to worry about double slashes.

type ZoomLevelRange

type ZoomLevelRange struct {
	// Start zoom level
	// +kubebuilder:validation:Minimum=0
	Start int `yaml:"start" json:"start" validate:"gte=0,ltefield=End"`

	// End zoom level
	End int `yaml:"end" json:"end" validate:"required,gtefield=Start"`
}

+kubebuilder:object:generate=true

func (*ZoomLevelRange) DeepCopy

func (in *ZoomLevelRange) DeepCopy() *ZoomLevelRange

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ZoomLevelRange.

func (*ZoomLevelRange) DeepCopyInto

func (in *ZoomLevelRange) DeepCopyInto(out *ZoomLevelRange)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL