| // Licensed to the Apache Software Foundation (ASF) under one or more | |
| // contributor license agreements. See the NOTICE file distributed with | |
| // this work for additional information regarding copyright ownership. | |
| // The ASF licenses this file to You under the Apache License, Version 2.0 | |
| // (the "License"); you may not use this file except in compliance with | |
| // the License. You may obtain a copy of the License at | |
| // | |
| // http://www.apache.org/licenses/LICENSE-2.0 | |
| // | |
| // Unless required by applicable law or agreed to in writing, software | |
| // distributed under the License is distributed on an "AS IS" BASIS, | |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| // See the License for the specific language governing permissions and | |
| // limitations under the License. | |
| package environment | |
| import ( | |
| "fmt" | |
| "time" | |
| ) | |
| // NetworkEnvs contains all environment variables that need to run server. | |
| type NetworkEnvs struct { | |
| ip string | |
| port int | |
| protocol string | |
| } | |
| // NewNetworkEnvs constructor for NetworkEnvs | |
| func NewNetworkEnvs(ip string, port int, protocol string) *NetworkEnvs { | |
| return &NetworkEnvs{ip: ip, port: port, protocol: protocol} | |
| } | |
| // Address returns concatenated ip and port through ':' | |
| func (serverEnvs NetworkEnvs) Address() string { | |
| return fmt.Sprintf("%s:%d", serverEnvs.ip, serverEnvs.port) | |
| } | |
| // Protocol returns the protocol over which the server will listen | |
| func (serverEnvs *NetworkEnvs) Protocol() string { | |
| return serverEnvs.protocol | |
| } | |
| // CacheEnvs contains all environment variables that needed to use cache | |
| type CacheEnvs struct { | |
| // cacheType is type of cache (local/redis) | |
| cacheType string | |
| // this is a string with hostname:port of the cache server for redis caches | |
| address string | |
| // keyExpirationTime is expiration time for cache keys | |
| keyExpirationTime time.Duration | |
| } | |
| // CacheType returns cache type | |
| func (ce *CacheEnvs) CacheType() string { | |
| return ce.cacheType | |
| } | |
| // Address returns address to connect to remote cache service | |
| func (ce *CacheEnvs) Address() string { | |
| return ce.address | |
| } | |
| // KeyExpirationTime returns expiration time for cache keys | |
| func (ce *CacheEnvs) KeyExpirationTime() time.Duration { | |
| return ce.keyExpirationTime | |
| } | |
| // NewCacheEnvs constructor for CacheEnvs | |
| func NewCacheEnvs(cacheType, cacheAddress string, cacheExpirationTime time.Duration) *CacheEnvs { | |
| return &CacheEnvs{ | |
| cacheType: cacheType, | |
| address: cacheAddress, | |
| keyExpirationTime: cacheExpirationTime, | |
| } | |
| } | |
| // ApplicationEnvs contains all environment variables that needed to run backend processes | |
| type ApplicationEnvs struct { | |
| // workingDir is a root working directory of application. | |
| // This directory is different from the `pwd` of the application. It is a working directory passed as | |
| // a parameter where the application stores code, executables, etc. | |
| workingDir string | |
| // cacheEnvs contains environment variables for cache | |
| cacheEnvs *CacheEnvs | |
| // pipelineExecuteTimeout is timeout for code processing | |
| pipelineExecuteTimeout time.Duration | |
| // launchSite is a launch site of application | |
| launchSite string | |
| // projectId is the Google Сloud project id | |
| projectId string | |
| // pipelinesFolder is name of folder in which the pipelines resources are stored | |
| pipelinesFolder string | |
| // schemaVersion is the database schema version | |
| schemaVersion int | |
| // sdkConfigPath is a sdk configuration file | |
| sdkConfigPath string | |
| // propertyPath is the application properties path | |
| propertyPath string | |
| // kafkaEmulatorExecutablePath is the path to Kafka emulator executable file | |
| kafkaEmulatorExecutablePath string | |
| // datasetsPath is the datasets path used for Kafka examples | |
| datasetsPath string | |
| // cacheRequestTimeout is timeout to request data from cache | |
| cacheRequestTimeout time.Duration | |
| // cleanupSnippetsFunctionsUrl is the url to cleanup snippets functions | |
| cleanupSnippetsFunctionsUrl string | |
| // putSnippetFunctionUrl is the url to put snippet function | |
| putSnippetFunctionsUrl string | |
| // incrementSnippetViewsFunctionsUrl is the url to increment snippet views | |
| incrementSnippetViewsFunctionsUrl string | |
| } | |
| // NewApplicationEnvs constructor for ApplicationEnvs | |
| func NewApplicationEnvs( | |
| workingDir, | |
| launchSite, | |
| projectId, | |
| pipelinesFolder, | |
| sdkConfigPath, | |
| propertyPath, | |
| kafkaEmulatorExecutablePath, | |
| datasetsPath, | |
| cleanupSnippetsFunctionsUrl, | |
| putSnippetFunctionsUrl, | |
| incrementSnippetViewsFunctionsUrl string, | |
| cacheEnvs *CacheEnvs, | |
| pipelineExecuteTimeout, cacheRequestTimeout time.Duration, | |
| ) *ApplicationEnvs { | |
| return &ApplicationEnvs{ | |
| workingDir: workingDir, | |
| cacheEnvs: cacheEnvs, | |
| pipelineExecuteTimeout: pipelineExecuteTimeout, | |
| launchSite: launchSite, | |
| projectId: projectId, | |
| pipelinesFolder: pipelinesFolder, | |
| sdkConfigPath: sdkConfigPath, | |
| propertyPath: propertyPath, | |
| datasetsPath: datasetsPath, | |
| kafkaEmulatorExecutablePath: kafkaEmulatorExecutablePath, | |
| cacheRequestTimeout: cacheRequestTimeout, | |
| cleanupSnippetsFunctionsUrl: cleanupSnippetsFunctionsUrl, | |
| putSnippetFunctionsUrl: putSnippetFunctionsUrl, | |
| incrementSnippetViewsFunctionsUrl: incrementSnippetViewsFunctionsUrl, | |
| } | |
| } | |
| // WorkingDir returns root working directory of application | |
| func (ae *ApplicationEnvs) WorkingDir() string { | |
| return ae.workingDir | |
| } | |
| // CacheEnvs returns cache environments | |
| func (ae *ApplicationEnvs) CacheEnvs() *CacheEnvs { | |
| return ae.cacheEnvs | |
| } | |
| // PipelineExecuteTimeout returns timeout for code processing | |
| func (ae *ApplicationEnvs) PipelineExecuteTimeout() time.Duration { | |
| return ae.pipelineExecuteTimeout | |
| } | |
| // LaunchSite returns launch site of application | |
| func (ae *ApplicationEnvs) LaunchSite() string { | |
| return ae.launchSite | |
| } | |
| // GoogleProjectId returns Google Сloud project id | |
| func (ae *ApplicationEnvs) GoogleProjectId() string { | |
| return ae.projectId | |
| } | |
| // PipelinesFolder returns name of folder in which the pipelines resources are stored | |
| func (ae *ApplicationEnvs) PipelinesFolder() string { | |
| return ae.pipelinesFolder | |
| } | |
| // SchemaVersion returns the database schema version | |
| func (ae *ApplicationEnvs) SchemaVersion() int { | |
| return ae.schemaVersion | |
| } | |
| // SdkConfigPath returns sdk configuration file | |
| func (ae *ApplicationEnvs) SdkConfigPath() string { | |
| return ae.sdkConfigPath | |
| } | |
| // PropertyPath returns the application properties path | |
| func (ae *ApplicationEnvs) PropertyPath() string { | |
| return ae.propertyPath | |
| } | |
| // SetSchemaVersion sets the database schema version | |
| func (ae *ApplicationEnvs) SetSchemaVersion(schemaVersion int) { | |
| ae.schemaVersion = schemaVersion | |
| } | |
| // CacheRequestTimeout returns timeout to request data from cache | |
| func (ae *ApplicationEnvs) CacheRequestTimeout() time.Duration { | |
| return ae.cacheRequestTimeout | |
| } | |
| // DatasetsPath returns paths to datasets used for Kafka examples | |
| func (ae *ApplicationEnvs) DatasetsPath() string { | |
| return ae.datasetsPath | |
| } | |
| func (ae *ApplicationEnvs) KafkaExecutablePath() string { | |
| return ae.kafkaEmulatorExecutablePath | |
| } | |
| // CleanupSnippetsFunctionsUrl returns the url to cleanup snippets functions | |
| func (ae *ApplicationEnvs) CleanupSnippetsFunctionsUrl() string { | |
| return ae.cleanupSnippetsFunctionsUrl | |
| } | |
| // PutSnippetFunctionUrl returns the url to put snippet functions | |
| func (ae *ApplicationEnvs) PutSnippetFunctionsUrl() string { | |
| return ae.putSnippetFunctionsUrl | |
| } | |
| // IncrementSnippetViewsFunctionsUrl returns the url to increment snippet views | |
| func (ae *ApplicationEnvs) IncrementSnippetViewsFunctionsUrl() string { | |
| return ae.incrementSnippetViewsFunctionsUrl | |
| } |