Path: blob/main/extensions/github-authentication/src/common/keychain.ts
3320 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import * as vscode from 'vscode';6import { Log } from './logger';78export class Keychain {9constructor(10private readonly context: vscode.ExtensionContext,11private readonly serviceId: string,12private readonly Logger: Log13) { }1415async setToken(token: string): Promise<void> {16try {17return await this.context.secrets.store(this.serviceId, token);18} catch (e) {19// Ignore20this.Logger.error(`Setting token failed: ${e}`);21}22}2324async getToken(): Promise<string | null | undefined> {25try {26const secret = await this.context.secrets.get(this.serviceId);27if (secret && secret !== '[]') {28this.Logger.trace('Token acquired from secret storage.');29}30return secret;31} catch (e) {32// Ignore33this.Logger.error(`Getting token failed: ${e}`);34return Promise.resolve(undefined);35}36}3738async deleteToken(): Promise<void> {39try {40return await this.context.secrets.delete(this.serviceId);41} catch (e) {42// Ignore43this.Logger.error(`Deleting token failed: ${e}`);44return Promise.resolve(undefined);45}46}47}484950