Create shared access signature RPC (#18823)

* Rebase from main branch

* Made mssql a module

* remove rpc specific stuff

* Added create sas RPC call

* Backup to url works now

* Moved createSas RPC to the BlobService

* Relocated createSas RPC from sql-dataprotocolclient to the mssql

* After rebase

* Removed duplicate symbol

* Renamed Blob to AzureBlob and relocated CreateSasResponse to mssql extension

* Removed AzureBlobProvider, removed AzureBlobService feature

* renamed blob to azureblob, converted thenable to promise

* Simplify API

* fixes

* docs update, blob to azureblob update

* bumped sts version

* Fix config

Co-authored-by: chgagnon <chgagnon@microsoft.com>
This commit is contained in:
Nemanja Milovančević
2022-04-21 19:30:46 +02:00
committed by GitHub
parent e9fefd2487
commit 1cf905a7b8
19 changed files with 207 additions and 4 deletions

View File

@@ -0,0 +1,26 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import type * as mssql from 'mssql';
import { SqlOpsDataClient } from 'dataprotocol-client';
import * as contracts from '../contracts';
export class AzureBlobService implements mssql.IAzureBlobService {
public constructor(protected readonly client: SqlOpsDataClient) { }
public async createSas(ownerUri: string, blobContainerUri: string, blobContainerKey: string, storageAccountName: string, expirationDate: string): Promise<mssql.CreateSasResponse> {
// This isn't registered as a feature since it's not something that we expect every tools client to implement currently since the usage is
// specifically for ADS and SqlToolsService.
const params: contracts.CreateSasParams = { ownerUri, blobContainerUri, blobContainerKey, storageAccountName, expirationDate };
return this.client.sendRequest(contracts.CreateSasRequest.type, params).then(
undefined,
e => {
this.client.logFailedRequest(contracts.CreateSasRequest.type, e);
return Promise.resolve(undefined);
}
);
}
}