Migrate from using Worker to using Container
This commit is contained in:
parent
c18ebdf5e1
commit
b965201aec
|
@ -5,21 +5,21 @@ public protocol FileOverrideSupporting { }
|
|||
|
||||
public protocol FilesystemAdapter {
|
||||
|
||||
func has(file: String, on: Worker, options: FileOptions?) -> Future<Bool>
|
||||
func read(file: String, on: Worker, options: FileOptions?) -> Future<Data>
|
||||
func listContents(of: String, recursive: Bool, on: Worker, options: FileOptions?) -> Future<[String]>
|
||||
func metadata(of: String, on: Worker, options: FileOptions?) -> Future<FileMetadata>
|
||||
func size(of: String, on: Worker, options: FileOptions?) -> Future<Int>
|
||||
func mimetype(of: String, on: Worker, options: FileOptions?) -> Future<String>
|
||||
func timestamp(of: String, on: Worker, options: FileOptions?) -> Future<Date>
|
||||
func has(file: String, on: Container, options: FileOptions?) -> Future<Bool>
|
||||
func read(file: String, on: Container, options: FileOptions?) -> Future<Data>
|
||||
func listContents(of: String, recursive: Bool, on: Container, options: FileOptions?) -> Future<[String]>
|
||||
func metadata(of: String, on: Container, options: FileOptions?) -> Future<FileMetadata>
|
||||
func size(of: String, on: Container, options: FileOptions?) -> Future<Int>
|
||||
func mimetype(of: String, on: Container, options: FileOptions?) -> Future<String>
|
||||
func timestamp(of: String, on: Container, options: FileOptions?) -> Future<Date>
|
||||
// func visibility(of: String, on: Worker, options: FileOptions?) -> Future<FileVisibility>
|
||||
func write(data: Data, to: String, on: Worker, options: FileOptions?) -> Future<()>
|
||||
func update(data: Data, to: String, on: Worker, options: FileOptions?) -> Future<()>
|
||||
func rename(file: String, to: String, on: Worker, options: FileOptions?) -> Future<()>
|
||||
func copy(file: String, to: String, on: Worker, options: FileOptions?) -> Future<()>
|
||||
func delete(file: String, on: Worker, options: FileOptions?) -> Future<()>
|
||||
func delete(directory: String, on: Worker, options: FileOptions?) -> Future<()>
|
||||
func create(directory: String, on: Worker, options: FileOptions?) -> Future<()>
|
||||
func write(data: Data, to: String, on: Container, options: FileOptions?) -> Future<()>
|
||||
func update(data: Data, to: String, on: Container, options: FileOptions?) -> Future<()>
|
||||
func rename(file: String, to: String, on: Container, options: FileOptions?) -> Future<()>
|
||||
func copy(file: String, to: String, on: Container, options: FileOptions?) -> Future<()>
|
||||
func delete(file: String, on: Container, options: FileOptions?) -> Future<()>
|
||||
func delete(directory: String, on: Container, options: FileOptions?) -> Future<()>
|
||||
func create(directory: String, on: Container, options: FileOptions?) -> Future<()>
|
||||
// func setVisibility(of: String, to: FileVisibility, on: Worker, options: FileOptions?) -> Future<()>
|
||||
|
||||
}
|
||||
|
|
|
@ -16,13 +16,13 @@ public final class LocalAdapter: FilesystemAdapter {
|
|||
return URL(fileURLWithPath: prefixed).absoluteString
|
||||
}
|
||||
|
||||
public func has(file: String, on worker: Worker, options: FileOptions?) -> EventLoopFuture<Bool> {
|
||||
public func has(file: String, on worker: Container, options: FileOptions?) -> EventLoopFuture<Bool> {
|
||||
let path = self.applyPathPrefix(to: file)
|
||||
let exists = self.fileManager.fileExists(atPath: path)
|
||||
return worker.eventLoop.newSucceededFuture(result: exists)
|
||||
}
|
||||
|
||||
public func read(file: String, on worker: Worker, options: FileOptions?) -> EventLoopFuture<Data> {
|
||||
public func read(file: String, on worker: Container, options: FileOptions?) -> EventLoopFuture<Data> {
|
||||
let path = self.applyPathPrefix(to: file)
|
||||
guard let data = self.fileManager.contents(atPath: path) else {
|
||||
return worker.eventLoop.newFailedFuture(error: FilesystemError.fileNotFound(path))
|
||||
|
@ -31,12 +31,12 @@ public final class LocalAdapter: FilesystemAdapter {
|
|||
return worker.eventLoop.newSucceededFuture(result: data)
|
||||
}
|
||||
|
||||
public func listContents(of: String, recursive: Bool, on: Worker, options: FileOptions?) -> EventLoopFuture<[String]> {
|
||||
public func listContents(of: String, recursive: Bool, on: Container, options: FileOptions?) -> EventLoopFuture<[String]> {
|
||||
#warning("TODO: list contents support")
|
||||
fatalError("Not supported.")
|
||||
}
|
||||
|
||||
public func metadata(of file: String, on worker: Worker, options: FileOptions?) -> EventLoopFuture<FileMetadata> {
|
||||
public func metadata(of file: String, on worker: Container, options: FileOptions?) -> EventLoopFuture<FileMetadata> {
|
||||
do {
|
||||
let path = self.applyPathPrefix(to: file)
|
||||
let attributes = try self.fileManager.attributesOfItem(atPath: path)
|
||||
|
@ -63,7 +63,7 @@ public final class LocalAdapter: FilesystemAdapter {
|
|||
}
|
||||
}
|
||||
|
||||
public func size(of file: String, on worker: Worker, options: FileOptions?) -> EventLoopFuture<Int> {
|
||||
public func size(of file: String, on worker: Container, options: FileOptions?) -> EventLoopFuture<Int> {
|
||||
return metadata(of: file, on: worker, options: nil)
|
||||
.map { meta in
|
||||
guard let size = meta[.size] as? Int else {
|
||||
|
@ -74,11 +74,11 @@ public final class LocalAdapter: FilesystemAdapter {
|
|||
}
|
||||
}
|
||||
|
||||
public func mimetype(of: String, on: Worker, options: FileOptions?) -> EventLoopFuture<String> {
|
||||
public func mimetype(of: String, on: Container, options: FileOptions?) -> EventLoopFuture<String> {
|
||||
fatalError("Not supported.")
|
||||
}
|
||||
|
||||
public func timestamp(of file: String, on worker: Worker, options: FileOptions?) -> EventLoopFuture<Date> {
|
||||
public func timestamp(of file: String, on worker: Container, options: FileOptions?) -> EventLoopFuture<Date> {
|
||||
return metadata(of: file, on: worker, options: nil)
|
||||
.map { meta in
|
||||
guard let date = meta[.modificationDate] as? Date else {
|
||||
|
@ -89,7 +89,7 @@ public final class LocalAdapter: FilesystemAdapter {
|
|||
}
|
||||
}
|
||||
|
||||
public func write(data: Data, to file: String, on worker: Worker, options: FileOptions?) -> EventLoopFuture<()> {
|
||||
public func write(data: Data, to file: String, on worker: Container, options: FileOptions?) -> EventLoopFuture<()> {
|
||||
let path = self.applyPathPrefix(to: file)
|
||||
guard self.fileManager.createFile(atPath: path, contents: data, attributes: nil) else {
|
||||
return worker.eventLoop.newFailedFuture(error: FilesystemError.creationFailed)
|
||||
|
@ -98,7 +98,7 @@ public final class LocalAdapter: FilesystemAdapter {
|
|||
return worker.eventLoop.newSucceededFuture(result: ())
|
||||
}
|
||||
|
||||
public func update(data: Data, to file: String, on worker: Worker, options: FileOptions?) -> EventLoopFuture<()> {
|
||||
public func update(data: Data, to file: String, on worker: Container, options: FileOptions?) -> EventLoopFuture<()> {
|
||||
do {
|
||||
let path = self.applyPathPrefix(to: file)
|
||||
let fileURL = URL(fileURLWithPath: path)
|
||||
|
@ -130,7 +130,7 @@ public final class LocalAdapter: FilesystemAdapter {
|
|||
}
|
||||
}
|
||||
|
||||
public func rename(file: String, to newName: String, on worker: Worker, options: FileOptions?) -> EventLoopFuture<()> {
|
||||
public func rename(file: String, to newName: String, on worker: Container, options: FileOptions?) -> EventLoopFuture<()> {
|
||||
do {
|
||||
let path = self.applyPathPrefix(to: file)
|
||||
let fileURL = URL(fileURLWithPath: path)
|
||||
|
@ -144,7 +144,7 @@ public final class LocalAdapter: FilesystemAdapter {
|
|||
}
|
||||
}
|
||||
|
||||
public func copy(file: String, to newFile: String, on worker: Worker, options: FileOptions?) -> EventLoopFuture<()> {
|
||||
public func copy(file: String, to newFile: String, on worker: Container, options: FileOptions?) -> EventLoopFuture<()> {
|
||||
do {
|
||||
let path = self.applyPathPrefix(to: file)
|
||||
let newPath = self.applyPathPrefix(to: file)
|
||||
|
@ -155,7 +155,7 @@ public final class LocalAdapter: FilesystemAdapter {
|
|||
}
|
||||
}
|
||||
|
||||
public func delete(file: String, on worker: Worker, options: FileOptions?) -> EventLoopFuture<()> {
|
||||
public func delete(file: String, on worker: Container, options: FileOptions?) -> EventLoopFuture<()> {
|
||||
do {
|
||||
let path = self.applyPathPrefix(to: file)
|
||||
try self.fileManager.removeItem(atPath: path)
|
||||
|
@ -165,7 +165,7 @@ public final class LocalAdapter: FilesystemAdapter {
|
|||
}
|
||||
}
|
||||
|
||||
public func delete(directory: String, on worker: Worker, options: FileOptions?) -> EventLoopFuture<()> {
|
||||
public func delete(directory: String, on worker: Container, options: FileOptions?) -> EventLoopFuture<()> {
|
||||
do {
|
||||
let path = self.applyPathPrefix(to: directory)
|
||||
try self.fileManager.removeItem(atPath: path)
|
||||
|
@ -175,7 +175,7 @@ public final class LocalAdapter: FilesystemAdapter {
|
|||
}
|
||||
}
|
||||
|
||||
public func create(directory: String, on worker: Worker, options: FileOptions?) -> EventLoopFuture<()> {
|
||||
public func create(directory: String, on worker: Container, options: FileOptions?) -> EventLoopFuture<()> {
|
||||
do {
|
||||
let path = self.applyPathPrefix(to: directory)
|
||||
try self.fileManager.createDirectory(atPath: path, withIntermediateDirectories: true, attributes: nil)
|
||||
|
|
|
@ -30,7 +30,7 @@ extension Filesystem {
|
|||
return parts.joined(separator: "/")
|
||||
}
|
||||
|
||||
public class func normalize(path: String, on worker: Worker) -> Future<String> {
|
||||
public class func normalize(path: String, on worker: Container) -> Future<String> {
|
||||
do {
|
||||
let result = try self.normalize(path: path)
|
||||
return worker.eventLoop.newSucceededFuture(result: result)
|
||||
|
|
|
@ -4,9 +4,9 @@ import Vapor
|
|||
public class Filesystem: FilesystemType {
|
||||
|
||||
public let adapter: FilesystemAdapter
|
||||
public let worker: Worker
|
||||
public let worker: Container
|
||||
|
||||
public init(adapter: FilesystemAdapter, on worker: Worker) {
|
||||
public init(adapter: FilesystemAdapter, on worker: Container) {
|
||||
self.adapter = adapter
|
||||
self.worker = worker
|
||||
}
|
||||
|
|
|
@ -11,7 +11,7 @@ public class FilesystemManager: Filesystem {
|
|||
public let disks: [DiskIdentifier: FilesystemAdapter]
|
||||
public let `default`: DiskIdentifier
|
||||
|
||||
public init(disks: [DiskIdentifier: FilesystemAdapter], default theDefault: DiskIdentifier, on worker: Worker) throws {
|
||||
public init(disks: [DiskIdentifier: FilesystemAdapter], default theDefault: DiskIdentifier, on worker: Container) throws {
|
||||
self.disks = disks
|
||||
self.default = theDefault
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ final class FilesystemManagerTests: XCTestCase {
|
|||
let manager = try FilesystemManager(
|
||||
disks: [.potatoes: DummyAdapter(), .images: local],
|
||||
default: .images,
|
||||
on: EmbeddedEventLoop()
|
||||
on: container()
|
||||
)
|
||||
|
||||
XCTAssertNoThrow(try manager.use(.images))
|
||||
|
@ -30,7 +30,7 @@ final class FilesystemManagerTests: XCTestCase {
|
|||
let manager = try FilesystemManager(
|
||||
disks: [.images: local, .potatoes: dummy],
|
||||
default: .potatoes,
|
||||
on: EmbeddedEventLoop()
|
||||
on: container()
|
||||
)
|
||||
|
||||
let result = try manager.has(file: "irelevant").wait()
|
||||
|
@ -51,60 +51,60 @@ fileprivate class DummyAdapter: FilesystemAdapter {
|
|||
|
||||
var calledHas = false
|
||||
|
||||
func has(file: String, on: Worker, options: FileOptions?) -> EventLoopFuture<Bool> {
|
||||
func has(file: String, on: Container, options: FileOptions?) -> EventLoopFuture<Bool> {
|
||||
calledHas = true
|
||||
return on.eventLoop.newSucceededFuture(result: false)
|
||||
}
|
||||
|
||||
func read(file: String, on: Worker, options: FileOptions?) -> EventLoopFuture<Data> {
|
||||
func read(file: String, on: Container, options: FileOptions?) -> EventLoopFuture<Data> {
|
||||
fatalError()
|
||||
}
|
||||
|
||||
func listContents(of: String, recursive: Bool, on: Worker, options: FileOptions?) -> EventLoopFuture<[String]> {
|
||||
func listContents(of: String, recursive: Bool, on: Container, options: FileOptions?) -> EventLoopFuture<[String]> {
|
||||
fatalError()
|
||||
}
|
||||
|
||||
func metadata(of: String, on: Worker, options: FileOptions?) -> EventLoopFuture<FileMetadata> {
|
||||
func metadata(of: String, on: Container, options: FileOptions?) -> EventLoopFuture<FileMetadata> {
|
||||
fatalError()
|
||||
}
|
||||
|
||||
func size(of: String, on: Worker, options: FileOptions?) -> EventLoopFuture<Int> {
|
||||
func size(of: String, on: Container, options: FileOptions?) -> EventLoopFuture<Int> {
|
||||
fatalError()
|
||||
}
|
||||
|
||||
func mimetype(of: String, on: Worker, options: FileOptions?) -> EventLoopFuture<String> {
|
||||
func mimetype(of: String, on: Container, options: FileOptions?) -> EventLoopFuture<String> {
|
||||
fatalError()
|
||||
}
|
||||
|
||||
func timestamp(of: String, on: Worker, options: FileOptions?) -> EventLoopFuture<Date> {
|
||||
func timestamp(of: String, on: Container, options: FileOptions?) -> EventLoopFuture<Date> {
|
||||
fatalError()
|
||||
}
|
||||
|
||||
func write(data: Data, to: String, on: Worker, options: FileOptions?) -> EventLoopFuture<()> {
|
||||
func write(data: Data, to: String, on: Container, options: FileOptions?) -> EventLoopFuture<()> {
|
||||
fatalError()
|
||||
}
|
||||
|
||||
func update(data: Data, to: String, on: Worker, options: FileOptions?) -> EventLoopFuture<()> {
|
||||
func update(data: Data, to: String, on: Container, options: FileOptions?) -> EventLoopFuture<()> {
|
||||
fatalError()
|
||||
}
|
||||
|
||||
func rename(file: String, to: String, on: Worker, options: FileOptions?) -> EventLoopFuture<()> {
|
||||
func rename(file: String, to: String, on: Container, options: FileOptions?) -> EventLoopFuture<()> {
|
||||
fatalError()
|
||||
}
|
||||
|
||||
func copy(file: String, to: String, on: Worker, options: FileOptions?) -> EventLoopFuture<()> {
|
||||
func copy(file: String, to: String, on: Container, options: FileOptions?) -> EventLoopFuture<()> {
|
||||
fatalError()
|
||||
}
|
||||
|
||||
func delete(file: String, on: Worker, options: FileOptions?) -> EventLoopFuture<()> {
|
||||
func delete(file: String, on: Container, options: FileOptions?) -> EventLoopFuture<()> {
|
||||
fatalError()
|
||||
}
|
||||
|
||||
func delete(directory: String, on: Worker, options: FileOptions?) -> EventLoopFuture<()> {
|
||||
func delete(directory: String, on: Container, options: FileOptions?) -> EventLoopFuture<()> {
|
||||
fatalError()
|
||||
}
|
||||
|
||||
func create(directory: String, on: Worker, options: FileOptions?) -> EventLoopFuture<()> {
|
||||
func create(directory: String, on: Container, options: FileOptions?) -> EventLoopFuture<()> {
|
||||
fatalError()
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
import Foundation
|
||||
import XCTest
|
||||
import Vapor
|
||||
|
||||
extension XCTestCase {
|
||||
|
||||
func container() -> Container {
|
||||
return BasicContainer(
|
||||
config: Config.default(),
|
||||
environment: Environment.testing,
|
||||
services: Services.default(),
|
||||
on: EmbeddedEventLoop()
|
||||
)
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue