Migrate from using Worker to using Container

This commit is contained in:
Zdenek Topic 2018-10-15 16:23:06 +02:00
parent c18ebdf5e1
commit b965201aec
No known key found for this signature in database
GPG Key ID: 41897C1A6A09DEF5
7 changed files with 64 additions and 48 deletions

View File

@ -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<()>
}

View File

@ -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)

View File

@ -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)

View File

@ -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
}

View File

@ -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

View File

@ -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()
}

View File

@ -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()
)
}
}