From 4d12fb8acd79787e19f7809cfb7cf5c2a8c91241 Mon Sep 17 00:00:00 2001 From: Pierre-Emmanuel Jacquier <15922119+pierre-emmanuelJ@users.noreply.github.com> Date: Fri, 22 Dec 2023 16:07:07 +0000 Subject: [PATCH] Misc Signed-off-by: Pierre-Emmanuel Jacquier <15922119+pierre-emmanuelJ@users.noreply.github.com> --- v3/credentials/file.go | 36 +++++++++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/v3/credentials/file.go b/v3/credentials/file.go index 32e8da805..ea5bc05cc 100644 --- a/v3/credentials/file.go +++ b/v3/credentials/file.go @@ -1,16 +1,42 @@ package credentials +import "fmt" + +type FileOpt func(*FileProvider) + +// FileOptWithFilename returns a FileOpt overriding the default filename. +func FileOptWithFilename(filename string) FileOpt { + return func(f *FileProvider) { + f.filename = filename + } +} + +// FileOptWithAccount returns a FileOpt overriding the default account. +func FileOptWithAccount(account string) FileOpt { + return func(f *FileProvider) { + f.account = account + } +} + type FileProvider struct { + filename string + account string + retrieved bool } -func NewFileCredentials() *Credentials { - return NewCredentials(&FileProvider{}) +func NewFileCredentials(opts ...FileOpt) *Credentials { + fp := &FileProvider{} + for _, opt := range opts { + opt(fp) + } + return NewCredentials(fp) } func (f *FileProvider) Retrieve() (Value, error) { - return Value{}, nil + return Value{}, fmt.Errorf("not implemented") } -func (f *FileProvider) IsExpired() bool { - return false +// IsExpired returns if the shared credentials have expired. +func (p *FileProvider) IsExpired() bool { + return !p.retrieved }