aboutsummaryrefslogtreecommitdiffstats
path: root/bridge/core/token.go
diff options
context:
space:
mode:
authoramine <hilalyamine@gmail.com>2019-11-23 19:20:19 +0100
committeramine <hilalyamine@gmail.com>2019-11-23 19:20:19 +0100
commitbf7583862db5e20ad0bde85a2c9e28d50ea30db7 (patch)
tree9edd9789057dc02cb964a2e3e7d69eadcc064b91 /bridge/core/token.go
parent6345895a3d9a055927f1d4b78f254a55c1d271b6 (diff)
downloadgit-bug-bf7583862db5e20ad0bde85a2c9e28d50ea30db7.tar.gz
bridge/core: load token value in ensureInit
bridge/core: add more token functionalities
Diffstat (limited to 'bridge/core/token.go')
-rw-r--r--bridge/core/token.go76
1 files changed, 74 insertions, 2 deletions
diff --git a/bridge/core/token.go b/bridge/core/token.go
index 449ebbb5..0eac1a24 100644
--- a/bridge/core/token.go
+++ b/bridge/core/token.go
@@ -122,8 +122,7 @@ func LoadTokenPrefix(repo repository.RepoCommon, prefix string) (*Token, error)
return LoadToken(repo, matching[0])
}
-// ListTokens return a map representing the stored tokens in the repo config and global config
-// along with their type (global: true, local:false)
+// ListTokens list all existing token ids
func ListTokens(repo repository.RepoCommon) ([]entity.Id, error) {
configs, err := repo.GlobalConfig().ReadAll(tokenConfigKeyPrefix + ".")
if err != nil {
@@ -157,6 +156,79 @@ func ListTokens(repo repository.RepoCommon) ([]entity.Id, error) {
return result, nil
}
+// ListTokensWithTarget list all token ids associated with the target
+func ListTokensWithTarget(repo repository.RepoCommon, target string) ([]entity.Id, error) {
+ var ids []entity.Id
+ tokensIds, err := ListTokens(repo)
+ if err != nil {
+ return nil, err
+ }
+
+ for _, tokenId := range tokensIds {
+ token, err := LoadToken(repo, tokenId)
+ if err != nil {
+ return nil, err
+ }
+
+ if token.Target == target {
+ ids = append(ids, tokenId)
+ }
+ }
+ return ids, nil
+}
+
+// LoadTokens load all existing tokens
+func LoadTokens(repo repository.RepoCommon) ([]*Token, error) {
+ tokensIds, err := ListTokens(repo)
+ if err != nil {
+ return nil, err
+ }
+
+ var tokens []*Token
+ for _, id := range tokensIds {
+ token, err := LoadToken(repo, id)
+ if err != nil {
+ return nil, err
+ }
+ tokens = append(tokens, token)
+ }
+ return tokens, nil
+}
+
+// TokenIdExist return wether token id exist or not
+func TokenIdExist(repo repository.RepoCommon, id entity.Id) bool {
+ _, err := LoadToken(repo, id)
+ return err == nil
+}
+
+// TokenExist return wether there is a token with a certain value or not
+func TokenExist(repo repository.RepoCommon, value string) bool {
+ tokens, err := LoadTokens(repo)
+ if err != nil {
+ return false
+ }
+ for _, token := range tokens {
+ if token.Value == value {
+ return true
+ }
+ }
+ return false
+}
+
+// TokenExistWithTarget same as TokenExist but restrict search for a given target
+func TokenExistWithTarget(repo repository.RepoCommon, value string, target string) bool {
+ tokens, err := LoadTokens(repo)
+ if err != nil {
+ return false
+ }
+ for _, token := range tokens {
+ if token.Value == value && token.Target == target {
+ return true
+ }
+ }
+ return false
+}
+
// StoreToken stores a token in the repo config
func StoreToken(repo repository.RepoCommon, token *Token) error {
storeValueKey := fmt.Sprintf("git-bug.token.%s.%s", token.ID().String(), tokenValueKey)