Просмотр исходного кода

create mixin to allow switching of backend

Oliver Matthews 12 лет назад
Родитель
Сommit
f68080d56c

+ 4 - 4
services/filestore/app/coffee/FileController.coffee

@@ -1,4 +1,4 @@
-s3Wrapper = require("./s3Wrapper")
+fsWrapper = require("./fsWrapper")
 settings = require("settings-sharelatex")
 settings = require("settings-sharelatex")
 logger = require("logger-sharelatex")
 logger = require("logger-sharelatex")
 FileHandler = require("./FileHandler")
 FileHandler = require("./FileHandler")
@@ -37,9 +37,9 @@ module.exports =
 		oldProject_id = req.body.source.project_id
 		oldProject_id = req.body.source.project_id
 		oldFile_id = req.body.source.file_id
 		oldFile_id = req.body.source.file_id
 		logger.log key:key, bucket:bucket, oldProject_id:oldProject_id, oldFile_id:oldFile_id, "reciving request to copy file"
 		logger.log key:key, bucket:bucket, oldProject_id:oldProject_id, oldFile_id:oldFile_id, "reciving request to copy file"
-		s3Wrapper.copyFile bucket, "#{oldProject_id}/#{oldFile_id}", key, (err)->
+		fsWrapper.copyFile bucket, "#{oldProject_id}/#{oldFile_id}", key, (err)->
 			if err? 
 			if err? 
-				logger.log err:err, oldProject_id:oldProject_id, oldFile_id:oldFile_id, "something went wrong copying file in s3Wrapper"
+				logger.log err:err, oldProject_id:oldProject_id, oldFile_id:oldFile_id, "something went wrong copying file"
 				res.send 500
 				res.send 500
 			else
 			else
 				res.send 200
 				res.send 200
@@ -50,7 +50,7 @@ module.exports =
 		logger.log key:key, bucket:bucket,  "reciving request to delete file"
 		logger.log key:key, bucket:bucket,  "reciving request to delete file"
 		FileHandler.deleteFile bucket, key, (err)->
 		FileHandler.deleteFile bucket, key, (err)->
 			if err?
 			if err?
-				logger.log err:err, key:key, bucket:bucket, "something went wrong deleting file in s3Wrapper"
+				logger.log err:err, key:key, bucket:bucket, "something went wrong deleting file"
 				res.send 500
 				res.send 500
 			else
 			else
 				res.send 204
 				res.send 204

+ 13 - 16
services/filestore/app/coffee/FileHandler.coffee

@@ -1,5 +1,5 @@
 settings = require("settings-sharelatex")
 settings = require("settings-sharelatex")
-s3Wrapper = require("./s3Wrapper")
+fsWrapper = require("./fsWrapper")
 LocalFileWriter = require("./LocalFileWriter")
 LocalFileWriter = require("./LocalFileWriter")
 logger = require("logger-sharelatex")
 logger = require("logger-sharelatex")
 FileConverter = require("./FileConverter")
 FileConverter = require("./FileConverter")
@@ -12,15 +12,15 @@ module.exports =
 
 
 	insertFile: (bucket, key, stream, callback)->
 	insertFile: (bucket, key, stream, callback)->
 		convetedKey = KeyBuilder.getConvertedFolderKey(key)
 		convetedKey = KeyBuilder.getConvertedFolderKey(key)
-		s3Wrapper.deleteDirectory bucket, convetedKey, ->
-			s3Wrapper.sendStreamToS3 bucket, key, stream, ->
+		fsWrapper.deleteDirectory bucket, convetedKey, ->
+			fsWrapper.sendStreamToS3 bucket, key, stream, ->
 				callback()
 				callback()
 
 
 	deleteFile: (bucket, key, callback)->
 	deleteFile: (bucket, key, callback)->
 		convetedKey = KeyBuilder.getConvertedFolderKey(bucket, key)
 		convetedKey = KeyBuilder.getConvertedFolderKey(bucket, key)
 		async.parallel [
 		async.parallel [
-			(done)-> s3Wrapper.deleteFile bucket, key, done
-			(done)-> s3Wrapper.deleteFile bucket, convetedKey, done
+			(done)-> fsWrapper.deleteFile bucket, key, done
+			(done)-> fsWrapper.deleteFile bucket, convetedKey, done
 		], callback
 		], callback
 
 
 	getFile: (bucket, key, opts = {}, callback)->
 	getFile: (bucket, key, opts = {}, callback)->
@@ -31,16 +31,16 @@ module.exports =
 			@_getConvertedFile bucket, key, opts, callback
 			@_getConvertedFile bucket, key, opts, callback
 
 
 	_getStandardFile: (bucket, key, opts, callback)->
 	_getStandardFile: (bucket, key, opts, callback)->
-		s3Wrapper.getFileStream bucket, key, (err, fileStream)->
+		fsWrapper.getFileStream bucket, key, (err, fileStream)->
 			if err?
 			if err?
 				logger.err  bucket:bucket, key:key, opts:opts, "error getting fileStream"
 				logger.err  bucket:bucket, key:key, opts:opts, "error getting fileStream"
 			callback err, fileStream
 			callback err, fileStream
 
 
 	_getConvertedFile: (bucket, key, opts, callback)->
 	_getConvertedFile: (bucket, key, opts, callback)->
 		convetedKey = KeyBuilder.addCachingToKey(key, opts)
 		convetedKey = KeyBuilder.addCachingToKey(key, opts)
-		s3Wrapper.checkIfFileExists bucket, convetedKey, (err, exists)=>
+		fsWrapper.checkIfFileExists bucket, convetedKey, (err, exists)=>
 			if exists
 			if exists
-				s3Wrapper.getFileStream bucket, convetedKey, callback
+				fsWrapper.getFileStream bucket, convetedKey, callback
 			else
 			else
 				@_getConvertedFileAndCache bucket, key, convetedKey, opts, callback
 				@_getConvertedFileAndCache bucket, key, convetedKey, opts, callback
 
 
@@ -53,13 +53,13 @@ module.exports =
 				if err?
 				if err?
 					logger.err err:err, fsPath:fsPath, bucket:bucket, key:key, opts:opts, "something went wrong optimising png file"
 					logger.err err:err, fsPath:fsPath, bucket:bucket, key:key, opts:opts, "something went wrong optimising png file"
 					return callback(err)
 					return callback(err)
-				s3Wrapper.sendFileToS3 bucket, convetedKey, fsPath, (err)->
+				fsWrapper.sendFileToS3 bucket, convetedKey, fsPath, (err)->
 					if err?
 					if err?
-						logger.err err:err, bucket:bucket, key:key, convetedKey:convetedKey, opts:opts, "something went wrong seing file to s3"
+						logger.err err:err, bucket:bucket, key:key, convetedKey:convetedKey, opts:opts, "something went wrong sending the file"
 						return callback(err)
 						return callback(err)
-					s3Wrapper.getFileStream bucket, convetedKey, callback
+					fsWrapper.getFileStream bucket, convetedKey, callback
 
 
-	_convertFile: (bucket, origonalKey, opts, callback)->	
+	_convertFile: (bucket, origonalKey, opts, callback)->
 		@_writeS3FileToDisk bucket, origonalKey, (err, origonalFsPath)->
 		@_writeS3FileToDisk bucket, origonalKey, (err, origonalFsPath)->
 			if opts.format?
 			if opts.format?
 				FileConverter.convert origonalFsPath, opts.format, callback
 				FileConverter.convert origonalFsPath, opts.format, callback
@@ -72,9 +72,6 @@ module.exports =
 
 
 
 
 	_writeS3FileToDisk: (bucket, key, callback)->
 	_writeS3FileToDisk: (bucket, key, callback)->
-		s3Wrapper.getFileStream bucket, key, (err, fileStream)->
+		fsWrapper.getFileStream bucket, key, (err, fileStream)->
 			LocalFileWriter.writeStream fileStream, key, callback
 			LocalFileWriter.writeStream fileStream, key, callback
 
 
-
-
-

+ 9 - 0
services/filestore/app/coffee/fsWrapper.coffee

@@ -0,0 +1,9 @@
+settings = require("settings-sharelatex")
+wrappedFs = switch settings.filestoreWrapper
+	when "s3" then require("./s3Wrapper")
+	else null
+
+if !wrappedFs
+	throw new Error( "Unknown filestore wrapper #{settings.filestoreWrapper}" )
+
+module.exports[name] = method for name,method of wrappedFs

+ 5 - 0
services/filestore/config/settings.development.coffee

@@ -4,6 +4,11 @@ module.exports =
 			port: 3009
 			port: 3009
 			host: "localhost"
 			host: "localhost"
 			
 			
+	# which backend to use
+	# current options are:
+	# "s3" - Amazon S3
+	filestoreWrapper: "s3"
+
 	# ShareLaTeX stores binary files like images in S3.
 	# ShareLaTeX stores binary files like images in S3.
 	# Fill in your Amazon S3 credentials below.
 	# Fill in your Amazon S3 credentials below.
 	s3:
 	s3:

+ 1 - 1
services/filestore/test/unit/coffee/FileControllerTests.coffee

@@ -27,7 +27,7 @@ describe "FileController", ->
 		@controller = SandboxedModule.require modulePath, requires:
 		@controller = SandboxedModule.require modulePath, requires:
 			"./LocalFileWriter":@LocalFileWriter
 			"./LocalFileWriter":@LocalFileWriter
 			"./FileHandler": @FileHandler
 			"./FileHandler": @FileHandler
-			"./s3Wrapper":@s3Wrapper
+			"./fsWrapper":@s3Wrapper
 			"settings-sharelatex": @settings
 			"settings-sharelatex": @settings
 			"logger-sharelatex":
 			"logger-sharelatex":
 				log:->
 				log:->

+ 2 - 2
services/filestore/test/unit/coffee/FileHandlerTests.coffee

@@ -34,7 +34,7 @@ describe "FileHandler", ->
 			compressPng: sinon.stub()
 			compressPng: sinon.stub()
 		@handler = SandboxedModule.require modulePath, requires:
 		@handler = SandboxedModule.require modulePath, requires:
 			"settings-sharelatex": @settings
 			"settings-sharelatex": @settings
-			"./s3Wrapper":@s3Wrapper
+			"./fsWrapper":@s3Wrapper
 			"./LocalFileWriter":@LocalFileWriter
 			"./LocalFileWriter":@LocalFileWriter
 			"./FileConverter":@FileConverter
 			"./FileConverter":@FileConverter
 			"./KeyBuilder": @keyBuilder
 			"./KeyBuilder": @keyBuilder
@@ -174,4 +174,4 @@ describe "FileHandler", ->
 
 
 
 
 
 
-				
+