diff --git a/src/API/Catalogue.hs b/src/API/Catalogue.hs index 244f6dc..98c14b6 100644 --- a/src/API/Catalogue.hs +++ b/src/API/Catalogue.hs @@ -102,22 +102,24 @@ instance VersionedCatalog AppM 1 where getChannels = getChannelsV1 getBooks = getBooksV1 +relUrl :: Text -> Rel +relUrl x = Rel ("/api/current/" <> x) + getBooksV1 :: Channel.ChannelID -> SafeUser -> AppM (Catalog 1) getBooksV1 identifier SafeUser{} = do updated <- liftIO getCurrentTime - let self = Rel ("/api/current/" <> selfUrl) - start = Rel ("/api/current/" <> startUrl) + let self = relUrl selfUrl + start = relUrl startUrl selfUrl = pack . uriPath . linkURI $ safeLink (Proxy @(BaseAPI 1)) (Proxy @(ChannelCatalog 1)) identifier startUrl = pack . uriPath . linkURI $ safeLink (Proxy @(BaseAPI 1)) (Proxy @(RootCatalog 1)) entries = mempty pagination = Pagination Nothing Nothing pure CatalogV1{..} - getChannelsV1 :: SafeUser -> AppM (Catalog 1) getChannelsV1 SafeUser{username} = do updated <- liftIO getCurrentTime - let self = Rel ("/api/current/" <> selfUrl) + let self = relUrl selfUrl -- I'm not sure if this safe link approach is really useable with this -- api hierarchy since I can't access the topmost api from here. Also -- authentication would bring a little bit of extra effort as well @@ -130,7 +132,7 @@ getChannelsV1 SafeUser{username} = do fromChannel :: UTCTime -> Channel.Channel -> Entry 1 fromChannel updated Channel.Channel{..} = let url = pack . uriPath . linkURI $ safeLink (Proxy @(BaseAPI 1)) (Proxy @(ChannelCatalog 1)) identifier - self = Rel ("/api/current/" <> url) + self = relUrl url in EntryV1 channel channel updated channel (Left $ SubSection self) type VersionedAPI (v :: Nat) = Auth '[SA.BasicAuth, SA.JWT] SafeUser :> BaseAPI v