]> gitweb.michael.orlitzky.com - dead/htsn.git/blobdiff - src/FeedHosts.hs
Move the TSN namespace (Xml.hs and FeedHosts.hs) into the top level.
[dead/htsn.git] / src / FeedHosts.hs
index 43bab176aa67efeaba8e6a045aa1ae9d8057481d..b3fcc4827cd9688bed202d9c8b15669122644298 100644 (file)
@@ -1,37 +1,57 @@
 {-# LANGUAGE DeriveDataTypeable #-}
 
 -- | A newtype around a list of Strings which represent the feed
--- hosts. This is all to avoid an orphan instance of Configured for
--- [String] if we had defined one in e.g. OptionalConfiguration.
+--   hosts. This is all to avoid an orphan instance of Configured for
+--   [String] if we had defined one in e.g. OptionalConfiguration.
+--
+--   This was placed under the "TSN" namespace because its Default
+--   instance is specific to TSN, even though otherwise it's just a
+--   list of strings.
 --
 module FeedHosts
 where
 
 -- DC is needed only for the DCT.Configured instance of String.
 import qualified Data.Configurator as DC()
-import qualified Data.Configurator.Types as DCT
+import qualified Data.Configurator.Types as DCT (
+  Configured,
+  Value( List ),
+  convert )
 import Data.Data (Data)
 import System.Console.CmdArgs.Default (Default(..))
 import Data.Typeable (Typeable)
 
 
+-- | A (wrapper around a) list of hostnames that supply the XML feed.
+--
 newtype FeedHosts =
   FeedHosts { get_feed_hosts :: [String] }
     deriving (Data, Show, Typeable)
 
 
 instance Default FeedHosts where
+  -- | The default list of feed hosts. These were found by checking
+  --   PTR records in the neighborhood of the IP address in use. There
+  --   is a feed4.sportsnetwork.com, but it was not operational when
+  --   this was written.
   def = FeedHosts ["feed1.sportsnetwork.com",
                    "feed2.sportsnetwork.com",
                    "feed3.sportsnetwork.com"]
 
 
 instance DCT.Configured FeedHosts where
+  -- | This allows us to read a FeedHosts object out of a Configurator
+  --   config file. By default Configurator wouldn't know what to do,
+  --   so we have to tell it that we expect a list, and if that list
+  --   has strings in it, we can apply the FeedHosts constructor to
+  --   it.
   convert (DCT.List xs) =
+    -- mapM gives us a Maybe [String] here.
     fmap FeedHosts (mapM convert_string xs)
     where
       convert_string :: DCT.Value -> Maybe String
       convert_string = DCT.convert
 
+  -- If we read anything other than a list of values out of the file,
+  -- fail.
   convert _ = Nothing
-