mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2024-12-18 08:37:45 -05:00
7b9f9a487b
Signed-off-by: David Mehren <git@herrmehren.de>
38 lines
1.2 KiB
TypeScript
38 lines
1.2 KiB
TypeScript
import azure from 'azure-storage'
|
|
import path from 'path'
|
|
|
|
import { config } from '../../config'
|
|
import { logger } from '../../logger'
|
|
import { UploadProvider } from './index'
|
|
|
|
const AzureUploadProvider: UploadProvider = {
|
|
uploadImage: (imagePath, callback) => {
|
|
if (!callback || typeof callback !== 'function') {
|
|
logger.error('Callback has to be a function')
|
|
return
|
|
}
|
|
|
|
if (!imagePath) {
|
|
callback(new Error('Image path is missing or wrong'), undefined)
|
|
return
|
|
}
|
|
|
|
const azureBlobService = azure.createBlobService(config.azure.connectionString)
|
|
|
|
azureBlobService.createContainerIfNotExists(config.azure.container, { publicAccessLevel: 'blob' }, function (err, _, __) {
|
|
if (err) {
|
|
callback(new Error(err.message), undefined)
|
|
} else {
|
|
azureBlobService.createBlockBlobFromLocalFile(config.azure.container, path.basename(imagePath), imagePath, function (err, result, _) {
|
|
if (err) {
|
|
callback(new Error(err.message), undefined)
|
|
} else {
|
|
callback(undefined, azureBlobService.getUrl(config.azure.container, result.name))
|
|
}
|
|
})
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
export { AzureUploadProvider }
|