Support HTTP and HTTPS URLs
All checks were successful
Build / audit (push) Successful in 7s
Build / test (push) Successful in 14m19s

This commit is contained in:
Eugen Wissner 2024-09-20 17:52:09 +02:00
parent 5b4caa8ff7
commit ae63ff0cc0
Signed by: belka
GPG Key ID: A27FDC1E8EE902C0
2 changed files with 12 additions and 7 deletions

View File

@ -51,6 +51,7 @@ import Text.URI (URI(..))
import qualified Text.URI as URI
import Network.HTTP.Req
( useHttpsURI
, useURI
, HEAD(..)
, NoReqBody(..)
, req
@ -258,7 +259,7 @@ download uri packagePath = runReq defaultHttpConfig go
$ URI.unRText
$ NonEmpty.last
$ snd uriPath
| otherwise = throwM $ HttpsUrlExpected uri
| otherwise = throwM $ UnsupportedUrlType uri
readResponse :: FilePath -> Response BodyReader -> IO (FilePath, Digest MD5)
readResponse downloadFileName response = do
let attachmentName = dispositionAttachment response
@ -347,7 +348,11 @@ reqGet :: (MonadThrow m, MonadHttp m)
=> URI
-> (Response BodyReader -> IO a)
-> m a
reqGet uri bodyReader
| Just (httpsURI, httpsOptions) <- useHttpsURI uri =
reqGet uri bodyReader =
case useURI uri of
Just urlWithOptions
| Left (httpsURI, httpsOptions) <- urlWithOptions ->
reqBr GET httpsURI NoReqBody httpsOptions bodyReader
| otherwise = throwM $ HttpsUrlExpected uri
| Right (httpsURI, httpsOptions) <- urlWithOptions ->
reqBr GET httpsURI NoReqBody httpsOptions bodyReader
_ -> throwM $ UnsupportedUrlType uri

View File

@ -23,7 +23,7 @@ import qualified Codec.Compression.Lzma as Lzma
data SlackBuilderException
= UpdaterNotFound Text
| HttpsUrlExpected URI
| UnsupportedUrlType URI
| LzmaDecompressionFailed Lzma.LzmaRet
deriving Show
@ -31,7 +31,7 @@ instance Exception SlackBuilderException
where
displayException (UpdaterNotFound updateName) = Text.unpack
$ Text.concat ["Requested package \"", updateName, "\" was not found"]
displayException (HttpsUrlExpected givenURI) = Text.unpack
displayException (UnsupportedUrlType givenURI) = Text.unpack
$ "Only https URLs are supported, got: " <> URI.render givenURI
displayException (LzmaDecompressionFailed Lzma.LzmaRetOK) =
"Operation completed successfully"