From 4b3c279e71ec507f9ee13e1440575f128340ac54 Mon Sep 17 00:00:00 2001 From: comp500 Date: Fri, 8 May 2020 22:57:03 +0100 Subject: [PATCH] Add support for loading from file:// URIs --- .../installer/request/HandlerManager.kt | 4 +++- .../request/handlers/RequestHandlerFile.kt | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 src/main/kotlin/link/infra/packwiz/installer/request/handlers/RequestHandlerFile.kt diff --git a/src/main/kotlin/link/infra/packwiz/installer/request/HandlerManager.kt b/src/main/kotlin/link/infra/packwiz/installer/request/HandlerManager.kt index 43f338e..32b843a 100644 --- a/src/main/kotlin/link/infra/packwiz/installer/request/HandlerManager.kt +++ b/src/main/kotlin/link/infra/packwiz/installer/request/HandlerManager.kt @@ -1,6 +1,7 @@ package link.infra.packwiz.installer.request import link.infra.packwiz.installer.metadata.SpaceSafeURI +import link.infra.packwiz.installer.request.handlers.RequestHandlerFile import link.infra.packwiz.installer.request.handlers.RequestHandlerGithub import link.infra.packwiz.installer.request.handlers.RequestHandlerHTTP import okio.Source @@ -9,7 +10,8 @@ object HandlerManager { private val handlers: List = listOf( RequestHandlerGithub(), - RequestHandlerHTTP() + RequestHandlerHTTP(), + RequestHandlerFile() ) @JvmStatic diff --git a/src/main/kotlin/link/infra/packwiz/installer/request/handlers/RequestHandlerFile.kt b/src/main/kotlin/link/infra/packwiz/installer/request/handlers/RequestHandlerFile.kt new file mode 100644 index 0000000..84f786c --- /dev/null +++ b/src/main/kotlin/link/infra/packwiz/installer/request/handlers/RequestHandlerFile.kt @@ -0,0 +1,18 @@ +package link.infra.packwiz.installer.request.handlers + +import link.infra.packwiz.installer.metadata.SpaceSafeURI +import link.infra.packwiz.installer.request.IRequestHandler +import okio.Source +import okio.source +import java.nio.file.Paths + +open class RequestHandlerFile : IRequestHandler { + override fun matchesHandler(loc: SpaceSafeURI): Boolean { + return "file" == loc.scheme + } + + override fun getFileSource(loc: SpaceSafeURI): Source? { + val path = Paths.get(loc.toURL().toURI()) + return path.source() + } +}