Skip to content

Commit 287b3fa

Browse files
committed
Added Microsoft Azure Storage Files Adapter for Parse Server.
1 parent 8c6b03f commit 287b3fa

File tree

3 files changed

+56
-0
lines changed

3 files changed

+56
-0
lines changed

lib/questions.js

+40
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ function questions(config) {
6565
{name: 'Local File System', value: 'filesystem'},
6666
{name: 'AWS S3', value: 's3'},
6767
{name: 'Google Cloud Storage', value: 'gcs'},
68+
{name: 'Azure Blob Storage', value: 'azure'},
6869
],
6970
when: function() {
7071
return (['print','filesystem','s3','gcs'].indexOf(config.transferTo) == -1) &&
@@ -152,5 +153,44 @@ function questions(config) {
152153
!config.gcs_bucket;
153154
}
154155
},
156+
157+
// Azure settings
158+
{
159+
type: 'input',
160+
name: 'azure_account',
161+
message: 'Azure Storage account',
162+
when: function(answers) {
163+
return (answers.transferTo == 'azure' || config.transferTo == 'azure') &&
164+
!config.azure_account;
165+
}
166+
}, {
167+
type: 'input',
168+
name: 'azure_container',
169+
message: 'Azure Storage container',
170+
when: function(answers) {
171+
return (answers.transferTo == 'azure' || config.transferTo == 'azure') &&
172+
!config.azure_account &&
173+
!config.azure_container;
174+
}
175+
}, {
176+
type: 'input',
177+
name: 'azure_accessKey',
178+
message: 'Azure Storage access key',
179+
when: function(answers) {
180+
return (answers.transferTo == 'azure' || config.transferTo == 'azure') &&
181+
!config.azure_account &&
182+
!config.azure_container &&
183+
!config.azure_accessKey;
184+
}
185+
},
186+
{
187+
type: 'input',
188+
name: 'aws_bucketPrefix',
189+
message: 'S3 bucket prefix (optional)',
190+
when: function (answers) {
191+
return (answers.transferTo == 's3' || config.transferTo == 's3') &&
192+
!config.aws_bucketPrefix;
193+
}
194+
},
155195
]);
156196
}

lib/transfer.js

+15
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ var async = require('async');
44
var FilesystemAdapter = require('parse-server-fs-adapter');
55
var S3Adapter = require('parse-server-s3-adapter');
66
var GCSAdapter = require('parse-server-gcs-adapter');
7+
var AzureStorageAdapter = require('parse-server-azure-storage').AzureStorageAdapter;
78
var MongoClient = require('mongodb').MongoClient;
89

910
// regex that matches old legacy Parse hosted files
@@ -60,6 +61,16 @@ function _setup() {
6061
bucket: config.gcs_bucket,
6162
directAccess: true
6263
});
64+
} else if (config.transferTo == 'azure') {
65+
66+
var account = config.azure_account;
67+
var container = config.azure_container;
68+
var options = {
69+
accessKey: config.azure_accessKey,
70+
directAccess: false // If set to true, files will be served by Azure Blob Storage directly
71+
}
72+
config.filesAdapter = new AzureStorageAdapter(account, container, options);
73+
6374
} else {
6475
return Promise.reject('Invalid files adapter');
6576
}
@@ -91,6 +102,10 @@ function _requestErrorHandler(error, response) {
91102
* @return {String}
92103
*/
93104
function _nonParseFileName(fileName) {
105+
106+
// Don't change name.
107+
return fileName;
108+
94109
if (fileName.indexOf('tfss-') === 0) {
95110
return fileName.replace('tfss-', '');
96111
} else if (legacyFilesPrefixRegex.test(fileName)) {

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
"inquirer": "^1.1.2",
3030
"mongodb": "^2.2.4",
3131
"parse": "^1.8.5",
32+
"parse-server-azure-storage": "^1.1.0",
3233
"parse-server-fs-adapter": "^1.0.0",
3334
"parse-server-gcs-adapter": "^1.0.0",
3435
"parse-server-s3-adapter": "^1.0.4",

0 commit comments

Comments
 (0)