MCPcopy Create free account
hub / github.com/dropbox/dbxcli / getAccessCredential

Function getAccessCredential

cmd/auth.go:228–277  ·  view source on GitHub ↗
(tokType string, domain string, force bool)

Source from the content-addressed store, hash-verified

226}
227
228func getAccessCredential(tokType string, domain string, force bool) (storedCredential, string, error) {
229 filePath, err := authFilePath()
230 if err != nil {
231 return storedCredential{}, "", err
232 }
233
234 tokenMap, err := readTokens(filePath)
235 if err != nil && !os.IsNotExist(err) {
236 return storedCredential{}, "", fmt.Errorf("read auth file %q: %w", filePath, err)
237 }
238 if tokenMap == nil {
239 tokenMap = make(TokenMap)
240 }
241 if tokenMap[domain] == nil {
242 tokenMap[domain] = make(map[string]storedCredential)
243 }
244 tokens := tokenMap[domain]
245 credential := tokens[tokType]
246
247 if force || (credential.AccessToken == "" && credential.RefreshToken == "") {
248 if !force {
249 return storedCredential{}, "", missingAccessTokenError(tokType)
250 }
251 credential, err = requestAccessCredential(tokType, domain)
252 if err != nil {
253 return storedCredential{}, "", err
254 }
255 tokens[tokType] = credential
256 if err = writeTokens(filePath, tokenMap); err != nil {
257 return storedCredential{}, "", err
258 }
259 }
260
261 if !force && credential.shouldRefresh(time.Now()) {
262 credential, err = refreshStoredCredential(tokType, domain, credential)
263 if err != nil {
264 details := authTokenDetails(tokType)
265 if jsonErrorCode(err) == jsonErrorCodeAppKeyRequired {
266 return storedCredential{}, "", appKeyRequiredErrorfWithDetails("refresh saved Dropbox credentials: %w; run %q again", details, err, loginCommand(tokType))
267 }
268 return storedCredential{}, "", authRefreshFailedErrorfWithDetails("refresh saved Dropbox credentials: %w; run %q again", details, err, loginCommand(tokType))
269 }
270 tokens[tokType] = credential
271 if err = writeTokens(filePath, tokenMap); err != nil {
272 return storedCredential{}, "", err
273 }
274 }
275
276 return credential, filePath, nil
277}
278
279func getAccessToken(tokType string, domain string, force bool) (string, string, error) {
280 credential, filePath, err := getAccessCredential(tokType, domain, force)

Callers 2

getAccessTokenFunction · 0.85
initDbxFunction · 0.85

Calls 12

authFilePathFunction · 0.85
readTokensFunction · 0.85
missingAccessTokenErrorFunction · 0.85
requestAccessCredentialFunction · 0.85
writeTokensFunction · 0.85
refreshStoredCredentialFunction · 0.85
authTokenDetailsFunction · 0.85
jsonErrorCodeFunction · 0.85
loginCommandFunction · 0.85
shouldRefreshMethod · 0.80

Tested by

no test coverage detected