DecoderByName returns a *Decoder based on decoderName. It is intended to be used by URL openers in driver packages. Supported values include: - empty string: Returns the default from the URLOpener.Decoder, or BytesDecoder if URLOpener.Decoder is nil (which is true if you're using the default URLOp
(ctx context.Context, decoderName string, dflt *Decoder)
| 513 | // "RUNTIMEVAR_KEEPER_URL". See https://godoc.org/gocloud.dev/secrets#OpenKeeper |
| 514 | // for more details. |
| 515 | func DecoderByName(ctx context.Context, decoderName string, dflt *Decoder) (*Decoder, error) { |
| 516 | // Open a *secrets.Keeper if the decoderName contains "decrypt". |
| 517 | k, decoderName, err := decryptByName(ctx, decoderName) |
| 518 | if err != nil { |
| 519 | return nil, err |
| 520 | } |
| 521 | |
| 522 | if dflt == nil { |
| 523 | dflt = BytesDecoder |
| 524 | } |
| 525 | switch decoderName { |
| 526 | case "": |
| 527 | return maybeDecrypt(ctx, k, dflt), nil |
| 528 | case "bytes": |
| 529 | return maybeDecrypt(ctx, k, BytesDecoder), nil |
| 530 | case "jsonmap": |
| 531 | var m map[string]any |
| 532 | return maybeDecrypt(ctx, k, NewDecoder(&m, JSONDecode)), nil |
| 533 | case "string": |
| 534 | return maybeDecrypt(ctx, k, StringDecoder), nil |
| 535 | default: |
| 536 | return nil, fmt.Errorf("unsupported decoder %q", decoderName) |
| 537 | } |
| 538 | } |
| 539 | |
| 540 | // decryptByName returns a *secrets.Keeper for decryption when decoderName |
| 541 | // contains "decrypt". |
no test coverage detected