From b920133a68555c0a2ea3e446c2c4bd2e48a015f4 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Tue, 17 Sep 2019 19:09:35 +0200 Subject: [PATCH] read and write user data using sync store endpoint --- .../common/userDataSyncStoreService.ts | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/vs/platform/userDataSync/common/userDataSyncStoreService.ts b/src/vs/platform/userDataSync/common/userDataSyncStoreService.ts index e5da8ba57caa1..5bd7b3a859ad5 100644 --- a/src/vs/platform/userDataSync/common/userDataSyncStoreService.ts +++ b/src/vs/platform/userDataSync/common/userDataSyncStoreService.ts @@ -7,6 +7,10 @@ import { Disposable, } from 'vs/base/common/lifecycle'; import { IUserData, IUserDataSyncStoreService } from 'vs/platform/userDataSync/common/userDataSync'; import { IProductService } from 'vs/platform/product/common/productService'; import { Emitter, Event } from 'vs/base/common/event'; +import { IRequestService, asJson, asText } from 'vs/platform/request/common/request'; +import { URI } from 'vs/base/common/uri'; +import { joinPath } from 'vs/base/common/resources'; +import { CancellationToken } from 'vs/base/common/cancellation'; export class UserDataSyncStoreService extends Disposable implements IUserDataSyncStoreService { @@ -21,6 +25,7 @@ export class UserDataSyncStoreService extends Disposable implements IUserDataSyn constructor( @IProductService private readonly productService: IProductService, + @IRequestService private readonly requestService: IRequestService, ) { super(); } @@ -35,14 +40,23 @@ export class UserDataSyncStoreService extends Disposable implements IUserDataSyn if (!this.enabled) { return Promise.reject(new Error('No settings sync store url configured.')); } - return null; + const url = joinPath(URI.parse(this.productService.settingsSyncStoreUrl!), key).toString(); + const context = await this.requestService.request({ type: 'GET', url }, CancellationToken.None); + return asJson(context); } async write(key: string, content: string, ref: string | null): Promise { if (!this.enabled) { return Promise.reject(new Error('No settings sync store url configured.')); } - return ''; + const url = joinPath(URI.parse(this.productService.settingsSyncStoreUrl!), key).toString(); + const data = JSON.stringify({ content, ref }); + const context = await this.requestService.request({ type: 'POST', url, data }, CancellationToken.None); + const newRef = await asText(context); + if (!newRef) { + throw new Error('Server did not return the ref'); + } + return newRef; } }