added azure related code
[it/otf.git] / otf-frontend / server / src / lib / azure-storage.js
1 /*  Copyright (c) 2019 AT&T Intellectual Property.                             #\r
2 #                                                                              #\r
3 #   Licensed under the Apache License, Version 2.0 (the "License");            #\r
4 #   you may not use this file except in compliance with the License.           #\r
5 #   You may obtain a copy of the License at                                    #\r
6 #                                                                              #\r
7 #       http://www.apache.org/licenses/LICENSE-2.0                             #\r
8 #                                                                              #\r
9 #   Unless required by applicable law or agreed to in writing, software        #\r
10 #   distributed under the License is distributed on an "AS IS" BASIS,          #\r
11 #   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   #\r
12 #   See the License for the specific language governing permissions and        #\r
13 #   limitations under the License.                                             #\r
14 ##############################################################################*/\r
15 \r
16 \r
17 const {\r
18     ServiceURL,\r
19     StorageURL,\r
20     SharedKeyCredential,\r
21     TokenCredential,\r
22     ContainerURL\r
23   } = require("@azure/storage-blob");\r
24 \r
25 module.exports = function(app) {\r
26     // Enter your storage account name and shared key\r
27     const account = app.get('azure').storage.account;\r
28     const accountKey = app.get('azure').storage.key;\r
29     const container = app.get('azure').storage.container;\r
30   \r
31     // Use SharedKeyCredential with storage account and account key\r
32     const sharedKeyCredential = new SharedKeyCredential(account, accountKey);\r
33   \r
34     // Use TokenCredential with OAuth token\r
35     const tokenCredential = new TokenCredential("token");\r
36     tokenCredential.token = "renewedToken"; // Renew the token by updating token field of token credential\r
37   \r
38     // Use sharedKeyCredential, tokenCredential or anonymousCredential to create a pipeline\r
39     const pipeline = StorageURL.newPipeline(sharedKeyCredential);\r
40   \r
41     // List containers\r
42     const serviceURL = new ServiceURL(\r
43       // When using AnonymousCredential, following url should include a valid SAS or support public access\r
44       `https://${account}.blob.core.windows.net`,\r
45       pipeline\r
46     );\r
47 \r
48     const containerURL = ContainerURL.fromServiceURL(serviceURL, container);\r
49 \r
50     app.set('azureStorageContainerUrl', containerURL);\r
51 }