module Feature.Sharing.HTTP ( routes ) where import Core.Configuration (dbPath, adminEmail, confLinkLength) import Core.Templates (renderIndex) import Core.Types import Feature.Generation.Links (genLink) import Feature.Sharing.SQLite (findByLink, insertNewSecret) import Feature.Sharing.Templates (renderPw) import Control.Monad.Trans (liftIO) import Data.List.Split (splitOn) import Data.Maybe (listToMaybe) import Prelude import System.Environment import Web.Scotty import qualified Data.Text as T import qualified Data.Text.Lazy as LT routes :: PurrApp () routes = do get "/pw/:id" $ do reqId <- param "id" email <- liftIO adminEmail html $ renderIndex reqId email post "/pw" $ do reqId <- param "userLink" res <- findByLink reqId html $ renderPw (last $ splitOn "/" reqId) res post "/new" $ do reqSecret <- param "newSec" reqDur <- param "newSecDuration" reqViews <- param "newSecViews" cLengthStr <- liftIO confLinkLength let cLength = read cLengthStr :: Int link <- liftIO $ genLink cLength insertNewSecret reqSecret reqDur (T.pack $ show link) reqViews html $ renderPw (show link) (Just reqSecret)