Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/extensions/github-authentication/src/common/keychain.ts
3320 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import * as vscode from 'vscode';
7
import { Log } from './logger';
8
9
export class Keychain {
10
constructor(
11
private readonly context: vscode.ExtensionContext,
12
private readonly serviceId: string,
13
private readonly Logger: Log
14
) { }
15
16
async setToken(token: string): Promise<void> {
17
try {
18
return await this.context.secrets.store(this.serviceId, token);
19
} catch (e) {
20
// Ignore
21
this.Logger.error(`Setting token failed: ${e}`);
22
}
23
}
24
25
async getToken(): Promise<string | null | undefined> {
26
try {
27
const secret = await this.context.secrets.get(this.serviceId);
28
if (secret && secret !== '[]') {
29
this.Logger.trace('Token acquired from secret storage.');
30
}
31
return secret;
32
} catch (e) {
33
// Ignore
34
this.Logger.error(`Getting token failed: ${e}`);
35
return Promise.resolve(undefined);
36
}
37
}
38
39
async deleteToken(): Promise<void> {
40
try {
41
return await this.context.secrets.delete(this.serviceId);
42
} catch (e) {
43
// Ignore
44
this.Logger.error(`Deleting token failed: ${e}`);
45
return Promise.resolve(undefined);
46
}
47
}
48
}
49
50