-module Twitter.User
+-- | Functions and data for working with Twitter users.
+module Twitter.User (
+ User(..),
+ screen_name_to_timeline_url
+ )
where
-import Text.XML.HaXml
+import Control.Applicative ((<$>))
+import Data.Aeson ((.:), FromJSON(..), Value(Object))
+import Data.Text (pack)
+import Data.Monoid (mempty)
-import Twitter.Xml
+-- | Represents a Twitter user, and contains the only attribute
+-- thereof that we care about: the screen (user) name.
+data User = User { screen_name :: String } deriving (Eq, Show)
-data User = User { screen_name :: String }
- deriving (Show, Eq)
+instance FromJSON User where
+ parseJSON (Object u) =
+ User <$> (u .: screen_name_field)
+ where
+ screen_name_field = pack "screen_name"
-
-user_from_content :: Content -> (Maybe User)
-user_from_content c =
- if (length names) == 0
- then
- Nothing
- else
- case (get_char_data (names !! 0)) of
- Nothing -> Nothing
- (Just content) -> Just (User (content))
+ -- Do whatever.
+ parseJSON _ = mempty
- where
- names = user_screen_name c
+-- |Get the URL for the given screen name's timeline.
+screen_name_to_timeline_url :: String -> String
+screen_name_to_timeline_url =
+ ("http://twitter.com/" ++)