From b05ae8a0d2912e24ba7f33adc2c71f178b2ae7c3 Mon Sep 17 00:00:00 2001 From: Lucy Cifferello <12953208+elvece@users.noreply.github.com> Date: Tue, 1 Aug 2023 14:59:03 -0400 Subject: [PATCH] revert change; better error message and test case --- src/Handler/Admin.hs | 4 ++-- src/Lib/Types/Manifest.hs | 7 ++++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/Handler/Admin.hs b/src/Handler/Admin.hs index 03009cd..2626ecd 100644 --- a/src/Handler/Admin.hs +++ b/src/Handler/Admin.hs @@ -119,7 +119,7 @@ import Startlude ( (>), (&&), (||), - (<=) + (<=), traceM ) import System.FilePath ( (<.>), @@ -235,7 +235,7 @@ postPkgIndexR = do liftIO (decodeFileStrict manifest) `orThrow` sendResponseText status404 - [i|Could not locate manifest for #{indexPkgReqId}@#{indexPkgReqVersion}|] + [i|Could not decode manifest for #{indexPkgReqId}@#{indexPkgReqVersion}|] pool <- getsYesod appConnPool runSqlPoolNoTransaction (upsertPackageVersion man) pool Nothing runSqlPool (upsertPackageVersionPlatform indexPkgReqArches man) pool diff --git a/src/Lib/Types/Manifest.hs b/src/Lib/Types/Manifest.hs index f14a3f3..50b6190 100644 --- a/src/Lib/Types/Manifest.hs +++ b/src/Lib/Types/Manifest.hs @@ -11,7 +11,7 @@ import Data.String.Interpolate.IsString (i) import Data.Text qualified as T import Lib.Types.Core (PkgId, OsArch) import Lib.Types.Emver (Version (..), VersionRange) -import Startlude (ByteString, Eq, Generic, Hashable, Maybe (..), Monad ((>>=)), Read, Show, Text, for, pure, readMaybe, ($), Int, (.), map, otherwise, show) +import Startlude (ByteString, Eq, Generic, Hashable, Maybe (..), Monad ((>>=)), Read, Show, Text, for, pure, readMaybe, ($), Int, (.), map, otherwise, show, String) import Data.Aeson ( eitherDecodeStrict, (.:), @@ -20,7 +20,6 @@ import Data.Aeson withText, object, FromJSON(parseJSON), - Value(Object), KeyValue((.=)), ToJSON(toJSON) ) import Database.Persist.Sql ( PersistFieldSql(..) ) @@ -31,6 +30,7 @@ import Data.Either (Either(..)) import Database.Persist.Class ( PersistField(..) ) import Data.Aeson.Key ( fromText ) import Data.Maybe (maybe) +import Data.Aeson.Types (Value(Object)) data PackageManifest = PackageManifest @@ -107,7 +107,7 @@ instance ToJSON PackageDevice where toKeyValue (key, value) = fromText key .= toJSON value instance FromJSON PackageDevice where parseJSON = withObject "PackageDevice" $ \obj -> do - hashMap <- obj .: "" + hashMap <- parseJSON (Object obj) pure $ PackageDevice hashMap instance PersistField PackageDevice where @@ -125,6 +125,7 @@ data ServiceAlert = INSTALL | UNINSTALL | RESTORE | START | STOP -- >>> eitherDecodeStrict testManifest :: Either String PackageManifest +-- Right (PackageManifest {packageManifestId = embassy-pages, packageManifestTitle = "Embassy Pages", packageManifestVersion = 0.1.3, packageManifestDescriptionLong = "Embassy Pages is a simple web server that uses directories inside File Browser to serve Tor websites.", packageManifestDescriptionShort = "Create Tor websites, hosted on your Embassy.", packageManifestReleaseNotes = "Upgrade to EmbassyOS v0.3.0", packageManifestIcon = Just "icon.png", packageManifestAlerts = fromList [(STOP,Nothing),(RESTORE,Nothing),(INSTALL,Nothing),(START,Nothing),(UNINSTALL,Nothing)], packageManifestDependencies = fromList [(filebrowser,PackageDependency {packageDependencyOptional = Nothing, packageDependencyVersion = >=2.14.1.1 <3.0.0, packageDependencyDescription = Just "Used to upload files to serve."})], packageManifestEosVersion = 0.3.0, packageHardwareDevice = Just (PackageDevice (fromList [("processor",RegexPattern "^[A-Za-z0-9]+$"),("display",RegexPattern "^[A-Za-z0-9]+$")])), packageHardwareRam = Just 8000000000, packageHardwareArch = Just [aarch64,x86_64]}) testManifest :: ByteString testManifest = [i|{