Documentation ¶
Overview ¶
Package serializer is responsible for de/serializing Credential and Profile objects into different file formats.
Index ¶
- Constants
- func GetSupportedFileTypes() []string
- type Serializer
- func (thisSerializer *Serializer) Deserialize() (string, string, map[string]map[string]string, error)
- func (thisSerializer *Serializer) FromEnv() (string, string, map[string]map[string]string, error)
- func (thisSerializer *Serializer) FromIni() (string, string, map[string]map[string]string, error)
- func (thisSerializer *Serializer) FromJson() (string, string, map[string]map[string]string, error)
- func (thisSerializer *Serializer) ParseEnvironmentVariable(environmentVariable string) (string, string, string, bool)
- func (thisSerializer *Serializer) Serialize(username string, password string, attributes map[string]map[string]string) error
- func (thisSerializer *Serializer) ToEnv(username string, password string, attributes map[string]map[string]string) error
- func (thisSerializer *Serializer) ToIni(username string, password string, attributes map[string]map[string]string) error
- func (thisSerializer *Serializer) ToJson(username string, password string, attributes map[string]map[string]string) error
Constants ¶
const ERR_REQUIRED_VARIABLE_PASSWORD_NOT_FOUND = "password has not been set via the environment and is required, load failed"
const ERR_REQUIRED_VARIABLE_USERNAME_NOT_FOUND = "username has not been set via the environment and is required, load failed"
const ERR_UNRECOGNIZED_OUTPUT_TYPE string = "sorry I do not recognize that output type, valid values are (ini)"
Variables ¶
This section is empty.
Functions ¶
func GetSupportedFileTypes ¶ added in v1.2.0
func GetSupportedFileTypes() []string
Types ¶
type Serializer ¶
type Serializer struct { Factory *factory.Factory ProfileName string CredentialFile string ConfigFile string Initialized bool }
Serializer represents the basic settings required to (de)serialize a Credential and Profile.
func New ¶
func New(sourceFactory *factory.Factory, profileName string) *Serializer
New returns a Serializer object with all the defaults required to de(serialize) objects based on the Factory settings.
func (*Serializer) Deserialize ¶
func (thisSerializer *Serializer) Deserialize() (string, string, map[string]map[string]string, error)
Deserialize is responsible for deserializing an Credential and Profile, determining the file input type based on the value of thisSerializer.Factory.OutputType.
For the format expected of each file, please see the appropriate From<Type> function.
func (*Serializer) FromEnv ¶
FromEnv is responsible for scanning environment variables and retrieves applicable variables that have the prefix of applicationName and that have at least two "::" in them (which is the separator). The format for an environment variable managed by serializer is:
APPLICATION_NAME::PROFILE_NAME::FIELD_TYPE::SECTION_NAME::KEY_VALUE
Important to note is that if SECTION_NAME is blank then the default profile will be filled, and FIELD_TYPE can be one of three values which are USERNAME, PASSWORD, or ATTRIBUTE. If the FIELD_TYPE is ATTRIBUTE, then KEY_VALUE is mandatory.
func (*Serializer) FromIni ¶
FromIni is responsible for deserializing a Credential and Profile from an ini file. Attribute sections are directly translatable to sections in the Profile. Alternate field labels are restored from the ini, so the same Factory object will need to be used when deserializing.
func (*Serializer) FromJson ¶
FromJson is responsible for deserializing a Credential and Profile from an json file. Attribute sections are directly translatable to parent keys in the config file. Alternate field labels are restored from the json, so the same Factory object will need to be used when deserializing.
func (*Serializer) ParseEnvironmentVariable ¶
func (thisSerializer *Serializer) ParseEnvironmentVariable(environmentVariable string) (string, string, string, bool)
ParseEnvironmentVariable is able to process an environment variable and see if matches the expected format for our environment variables.
The format for an environment variable managed by serializer is:
APPLICATION_NAME::PROFILE_NAME::FIELD_TYPE::SECTION_NAME::KEY_VALUE
Important to note is that if SECTION_NAME is blank then the default profile will be filled, and FIELD_TYPE can be one of three values which are USERNAME, PASSWORD, or ATTRIBUTE. If the FIELD_TYPE is ATTRIBUTE, then KEY_VALUE is mandatory.
func (*Serializer) Serialize ¶
func (thisSerializer *Serializer) Serialize(username string, password string, attributes map[string]map[string]string) error
Serialize is responsible for serializing an Credential and Profile, determining the file output type based on the value of thisSerializer.Factory.OutputType. It is possible to serialize into multiple formats by initiating new factories, but there is only one version of config with no extension. Every time a Serialize call is made, the file contents are overwritten with the new values. Two formats cannot exist together.
The one exception to these rules is Environment, which doesn't save settings to file, although won't persists between sessions.
func (*Serializer) ToEnv ¶
func (thisSerializer *Serializer) ToEnv(username string, password string, attributes map[string]map[string]string) error
ToEnv is responsible for serializing a Credential/Profile combination into the environment. Both of the credential values are serialized as so:
APPLICATION_NAME::PROFILE_NAME::USERNAME (or alternate) APPLICATION_NAME::PROFILE_NAME::PASSWORD (or alternate)
Profile attributes are also added to the profile in the following format:
APPLICATION_NAME::PROFILE_NAME::ATTRIBUTE::SECTION_NAME::KEY_VALUE
SECTION_NAME can be blank.
func (*Serializer) ToIni ¶
func (thisSerializer *Serializer) ToIni(username string, password string, attributes map[string]map[string]string) error
ToIni is responsible for serializing a Credential and Profile to an ini file. Attribute sections are directly translatable to sections in the Profile. Username and Password will have an appropriate label (either the default or an alternate set in the Credential's related Factory.
func (*Serializer) ToJson ¶
func (thisSerializer *Serializer) ToJson(username string, password string, attributes map[string]map[string]string) error
ToJson is responsible for serializing a Credential and Profile to an json file. Attribute sections are directly translatable to parent keys in the config file. Username and Password will have an appropriate label (either the default or an alternate set in the Credential's related Factory.