module Data.Foscam.Directory(
  getFoscamDirectoryContents
) where

import Data.Foscam.File.Filename
import System.Directory
import Text.Trifecta
import Text.Trifecta.Delta
import Data.ByteString.UTF8 as UTF8
import Prelude

data FoscamDirectoryFile =
  Isn't FilePath
  | Is Filename
  deriving (Eq, Ord, Show)

getFoscamDirectoryContents ::
  FilePath
  -> IO [FoscamDirectoryFile]
getFoscamDirectoryContents p =
  let fromResult (Success n) =
        Is n
      fromResult (Failure _) =
        Isn't p
  in map (fromResult . parseString filename (Directed (UTF8.fromString p) 0 0 0 0)) <$> getDirectoryContents p