config

package
v0.51.0 Latest Latest
Warning

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

Go to latest
Published: Jun 7, 2024 License: MIT Imports: 21 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"`

	// Downloads available for this collection
	// +optional
	MapSheetDownloads *MapSheetDownloads `yaml:"mapSheetDownloads,omitempty" json:"mapSheetDownloads,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 CollectionLinks struct {
	// Links to downloads of entire collection. These will be rendered as rel=enclosure links
	// +optional
	Downloads []DownloadLink `yaml:"downloads,omitempty" json:"downloads,omitempty" validate:"dive"`
}

+kubebuilder:object:generate=true

func (*CollectionLinks) DeepCopy added in v0.51.0

func (in *CollectionLinks) DeepCopy() *CollectionLinks

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

func (*CollectionLinks) DeepCopyInto added in v0.51.0

func (in *CollectionLinks) DeepCopyInto(out *CollectionLinks)

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
	// +optional
	DatasetCatalogURL URL `yaml:"datasetCatalogUrl,omitempty" json:"datasetCatalogUrl,omitempty"`

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

	// 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.
	// +optional
	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 DownloadLink struct {
	// Name of the provided download
	Name string `yaml:"name" json:"name" validate:"required"`

	// Full URL to the file to be downloaded
	AssetURL *URL `yaml:"assetUrl" json:"assetUrl" validate:"required"`

	// Approximate size of the file to be downloaded
	// +optional
	Size string `yaml:"size,omitempty" json:"size,omitempty"`

	// Media type of the file to be downloaded
	MediaType MediaType `yaml:"mediaType" json:"mediaType" validate:"required"`
}

+kubebuilder:object:generate=true

func (*DownloadLink) DeepCopy added in v0.51.0

func (in *DownloadLink) DeepCopy() *DownloadLink

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

func (*DownloadLink) DeepCopyInto added in v0.51.0

func (in *DownloadLink) DeepCopyInto(out *DownloadLink)

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,omitempty" json:"srs,omitempty" 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).
	// For example 'azure?emulator=127.0.0.1:10000&sas=0' or 'google'
	Connection string `yaml:"connection" json:"connection" validate:"required"`

	// Username of the storage account, like 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"`

	// ADVANCED SETTING. 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"`

	// ADVANCED SETTING. 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"`

	// ADVANCED SETTING. Sets the SQLite "cache_size" pragma which determines how many pages are cached in-memory.
	// See https://sqlite.org/pragma.html#pragma_cache_size for details.
	// Default in SQLite is 2000 pages, which equates to 2000KiB (2048000 bytes). Which is denoted as -2000.
	// +kubebuilder:default=-2000
	// +optional
	InMemoryCacheSize int `yaml:"inMemoryCacheSize,omitempty" json:"inMemoryCacheSize,omitempty" validate:"required" default:"-2000"`
}

+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 GeoPackageDownload added in v0.50.2

type GeoPackageDownload struct {
	// Location of GeoPackage on remote HTTP(S) URL. GeoPackage will be downloaded to local disk
	// during startup and stored at the location specified in "file".
	From URL `yaml:"from" json:"from" validate:"required"`

	// ADVANCED SETTING. Determines how many workers (goroutines) in parallel will download the specified GeoPackage.
	// Setting this to 1 will disable concurrent downloads.
	// +kubebuilder:default=4
	// +kubebuilder:validation:Minimum=1
	// +optional
	Parallelism int `yaml:"parallelism,omitempty" json:"parallelism,omitempty" validate:"required,gte=1" default:"4"`

	// ADVANCED SETTING. When true TLS certs are NOT validated, false otherwise. Only use true for your own self-signed certificates!
	// +kubebuilder:default=false
	// +optional
	TLSSkipVerify bool `yaml:"tlsSkipVerify,omitempty" json:"tlsSkipVerify,omitempty" default:"false"`

	// ADVANCED SETTING. HTTP request timeout when downloading (part of) GeoPackage.
	// +kubebuilder:default="2m"
	// +optional
	Timeout Duration `yaml:"timeout,omitempty" json:"timeout,omitempty" validate:"required" default:"2m"`

	// ADVANCED SETTING. Minimum delay to use when retrying HTTP request to download (part of) GeoPackage.
	// +kubebuilder:default="1s"
	// +optional
	RetryDelay Duration `yaml:"retryDelay,omitempty" json:"retryDelay,omitempty" validate:"required" default:"1s"`

	// ADVANCED SETTING. Maximum overall delay of the exponential backoff while retrying HTTP requests to download (part of) GeoPackage.
	// +kubebuilder:default="30s"
	// +optional
	RetryMaxDelay Duration `yaml:"retryMaxDelay,omitempty" json:"retryMaxDelay,omitempty" validate:"required" default:"30s"`

	// ADVANCED SETTING. Maximum number of retries when retrying HTTP requests to download (part of) GeoPackage.
	// +kubebuilder:default=5
	// +kubebuilder:validation:Minimum=1
	// +optional
	MaxRetries int `yaml:"maxRetries,omitempty" json:"maxRetries,omitempty" validate:"required,gte=1" default:"5"`
}

+kubebuilder:object:generate=true

func (*GeoPackageDownload) DeepCopy added in v0.50.2

func (in *GeoPackageDownload) DeepCopy() *GeoPackageDownload

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

func (*GeoPackageDownload) DeepCopyInto added in v0.50.2

func (in *GeoPackageDownload) DeepCopyInto(out *GeoPackageDownload)

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.
	// You can place the GeoPackage here manually (out-of-band) or you can specify Download
	// and let the application download the GeoPackage for you and store it at this location.
	File string `yaml:"file" json:"file" validate:"required,omitempty,filepath"`

	// Optional initialization task to download a GeoPackage during startup. GeoPackage will be
	// downloaded to local disk and stored at the location specified in File.
	// +optional
	Download *GeoPackageDownload `yaml:"download,omitempty" json:"download,omitempty"`
}

+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"`

	// Links pertaining to this collection (e.g., downloads, documentation)
	// +optional
	Links *CollectionLinks `yaml:"links,omitempty" json:"links,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 MapSheetDownloadProperties added in v0.51.0

type MapSheetDownloadProperties struct {
	// Property containing file download URL
	AssetURL string `yaml:"assetUrl" json:"assetUrl" validate:"required"`

	// Property containing file size
	Size string `yaml:"size" json:"size" validate:"required"`

	// Property containing file media type
	MediaType MediaType `yaml:"mediaType" json:"mediaType" validate:"required"`

	// Property containing the map sheet identifier
	MapSheetID string `yaml:"mapSheetId" json:"mapSheetId" validate:"required"`
}

+kubebuilder:object:generate=true

func (*MapSheetDownloadProperties) DeepCopy added in v0.51.0

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

func (*MapSheetDownloadProperties) DeepCopyInto added in v0.51.0

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

type MapSheetDownloads added in v0.51.0

type MapSheetDownloads struct {
	// Properties that provide the download details per map sheet
	Properties MapSheetDownloadProperties `yaml:"properties" json:"properties" validate:"required"`
}

+kubebuilder:object:generate=true

func (*MapSheetDownloads) DeepCopy added in v0.51.0

func (in *MapSheetDownloads) DeepCopy() *MapSheetDownloads

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

func (*MapSheetDownloads) DeepCopyInto added in v0.51.0

func (in *MapSheetDownloads) DeepCopyInto(out *MapSheetDownloads)

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

type MediaType added in v0.51.0

type MediaType struct {
	contenttype.MediaType
}

MediaType represents a IANA media type as described in RFC 6838. Media types were formerly known as MIME types. +kubebuilder:validation:Type=string

func (*MediaType) DeepCopy added in v0.51.0

func (m *MediaType) DeepCopy() *MediaType

DeepCopy copy the receiver, create a new MediaType.

func (*MediaType) DeepCopyInto added in v0.51.0

func (m *MediaType) DeepCopyInto(out *MediaType)

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

func (MediaType) MarshalJSON added in v0.51.0

func (m MediaType) MarshalJSON() ([]byte, error)

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

func (MediaType) MarshalYAML added in v0.51.0

func (m MediaType) MarshalYAML() (interface{}, error)

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

func (*MediaType) UnmarshalJSON added in v0.51.0

func (m *MediaType) UnmarshalJSON(b []byte) error

UnmarshalJSON turn JSON into MediaType

func (*MediaType) UnmarshalYAML added in v0.51.0

func (m *MediaType) UnmarshalYAML(unmarshal func(any) error) error

UnmarshalYAML parses a string to MediaType

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) MapSheetPropertiesForCollection added in v0.51.0

func (oaf *OgcAPIFeatures) MapSheetPropertiesForCollection(collectionID string) *MapSheetDownloadProperties

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"`

	// When true the property/column in the feature table needs to be indexed. Initialization will fail
	// when no index is present, when false the index check is skipped. For large tables an index is recommended!
	//
	// +kubebuilder:default=true
	// +optional
	IndexRequired *bool `yaml:"indexRequired,omitempty" json:"indexRequired,omitempty" default:"true"` // ptr due to https://github.com/creasty/defaults/issues/49

	// Static list of allowed values to be used as input for this property filter. Will be enforced by OpenAPI spec.
	// +optional
	AllowedValues []string `yaml:"allowedValues,omitempty" json:"allowedValues,omitempty"`

	// Derive list of allowed values for this property filter from the corresponding column in the datastore.
	// Use with caution since it can increase startup time when used on large tables. Make sure an index in present.
	//
	// +kubebuilder:default=false
	// +optional
	DeriveAllowedValuesFromDatasource *bool `yaml:"deriveAllowedValuesFromDatasource,omitempty" json:"deriveAllowedValuesFromDatasource,omitempty" default:"false"`
}

+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