So, I'm creating a package for my service. Let's say I have multiple
versions with different features depending on the version and authorization
type specified, such as:
Authorization Type: ThirdParty
Version: 1.0
Utilizes: HMAC_SHA1 hash digest
Authorization Type: ThirdParty
Version: 1.1
Utilizes: HMAC_SHA1 or HMAC_SHA256 hash digest
Authorization Type: Internal
Version: 1.0
Utilized: HMAC_SHA512
I'm wanting to construct a configuration setting where the developer using
it can set the configuration in a chain, similar to:
MyPackage.Initialize(MyPackage.ThirdParty.Version10.HMAC_SHA1)
Using intellisense (and using ThirdParty authorization for the example), I
only want HMAC_SHA1 to appear if Version10 is specified, and both HMAC_SHA1
and HMAC_SHA256 to appear as options if Version11 in specified in the
chain. How would one go about setting this up? I've attempted different
strategies utilizing defined types, type functions, etc. and just can't get
it to work. Think of it as a treeview. Each section you define only has
options available under that specific view... and propagates all the way
down the tree. Something like this would be awesome:
package MyPackage
tree (
ThirdParty {
Version10 {
HMAC_SHA1 string = "thirdPartyVersion10HmacSha1"
}
Version11 {
HMAC_SHA1 string = "thirdPartyVersion11HmacSha1"
HMAC_SHA256 string = "thirdPartyVersion11HmacSha256"
}
}
Internal {
Version10 {
HMAC_SHA512 string = "internalVersion10HmacSha512"
{
{
}
Where the IDE would know to populate intellisense down those paths to the
ending defined type (e.g.
fmt.Print(MyPackage.ThirdParty.Version11.HMAC_SHA256) would result in
"thirdPartyVersion11HmacSha256" being printed)... and the IDE would
interpret that and make a map out of it internally or something. Anyhow,
hopefully that gives you an idea of what I'm trying to accomplish. Any
suggestions would be appreciated! Thanks...
--
You received this message because you are subscribed to the Google Groups
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/golang-nuts/e2a58aa2-76ec-4099-940d-21996602d317%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.