This commit is contained in:
Mats Rauhala 2018-08-28 22:41:59 +03:00
parent 3f1b2d3588
commit f55a982f57

View File

@ -102,22 +102,24 @@ instance VersionedCatalog AppM 1 where
getChannels = getChannelsV1 getChannels = getChannelsV1
getBooks = getBooksV1 getBooks = getBooksV1
relUrl :: Text -> Rel
relUrl x = Rel ("/api/current/" <> x)
getBooksV1 :: Channel.ChannelID -> SafeUser -> AppM (Catalog 1) getBooksV1 :: Channel.ChannelID -> SafeUser -> AppM (Catalog 1)
getBooksV1 identifier SafeUser{} = do getBooksV1 identifier SafeUser{} = do
updated <- liftIO getCurrentTime updated <- liftIO getCurrentTime
let self = Rel ("/api/current/" <> selfUrl) let self = relUrl selfUrl
start = Rel ("/api/current/" <> startUrl) start = relUrl startUrl
selfUrl = pack . uriPath . linkURI $ safeLink (Proxy @(BaseAPI 1)) (Proxy @(ChannelCatalog 1)) identifier selfUrl = pack . uriPath . linkURI $ safeLink (Proxy @(BaseAPI 1)) (Proxy @(ChannelCatalog 1)) identifier
startUrl = pack . uriPath . linkURI $ safeLink (Proxy @(BaseAPI 1)) (Proxy @(RootCatalog 1)) startUrl = pack . uriPath . linkURI $ safeLink (Proxy @(BaseAPI 1)) (Proxy @(RootCatalog 1))
entries = mempty entries = mempty
pagination = Pagination Nothing Nothing pagination = Pagination Nothing Nothing
pure CatalogV1{..} pure CatalogV1{..}
getChannelsV1 :: SafeUser -> AppM (Catalog 1) getChannelsV1 :: SafeUser -> AppM (Catalog 1)
getChannelsV1 SafeUser{username} = do getChannelsV1 SafeUser{username} = do
updated <- liftIO getCurrentTime 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 -- 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 -- api hierarchy since I can't access the topmost api from here. Also
-- authentication would bring a little bit of extra effort as well -- 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 :: UTCTime -> Channel.Channel -> Entry 1
fromChannel updated Channel.Channel{..} = fromChannel updated Channel.Channel{..} =
let url = pack . uriPath . linkURI $ safeLink (Proxy @(BaseAPI 1)) (Proxy @(ChannelCatalog 1)) identifier 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) in EntryV1 channel channel updated channel (Left $ SubSection self)
type VersionedAPI (v :: Nat) = Auth '[SA.BasicAuth, SA.JWT] SafeUser :> BaseAPI v type VersionedAPI (v :: Nat) = Auth '[SA.BasicAuth, SA.JWT] SafeUser :> BaseAPI v