module Flickr.People where
import Flickr.Monad
import Flickr.Types
import Flickr.Types.Import
import Flickr.Utils
import Text.XML.Light.Proc ( findChild )
import Control.Monad
findByEmail :: String -> FM User
findByEmail e =
flickTranslate toUser $
flickrCall "flickr.people.findByEmail"
[ ("find_email", e) ]
findByUsername :: UserName -> FM User
findByUsername u =
flickTranslate toUser $
flickrCall "flickr.people.findByUsername"
[ ("username", u) ]
getInfo :: UserID -> Bool -> FM User
getInfo uid authCall = (if authCall then withReadPerm else id) $ do
flickTranslate toUser $
flickCall "flickr.people.getInfo"
[ ("user_id", uid) ]
getPublicGroups :: UserID -> FM [Group]
getPublicGroups uid =
flickTranslate toGroupList $
flickrCall "flickr.people.getPublicGroups"
[ ("user_id", uid) ]
getPublicPhotos :: UserID -> Maybe Safety -> [PhotoInfo] -> FM [Photo]
getPublicPhotos uid s ps = liftM snd $
flickTranslate toPhotoList $
flickrCall "flickr.people.getPublicPhotos"
(mbArg "safe_search" (fmap (show.succ.fromEnum) s) $
lsArg "extras" (map show ps)
[ ("user_id", uid) ])
getUploadStatus :: FM (User, Bandwidth, FileSize, PhotosetQuota)
getUploadStatus =
flickTranslate toRes $
flickrCall "flickr.people.getUploadStatus" []
where
toRes s = parseDoc eltRes s
eltRes e = do
u <- eltUser e
b <- findChild (nsName "bandwidth") e >>= eltBandwidth
f <- findChild (nsName "filesize") e >>= eltFileSize
s <- findChild (nsName "sets") e >>= eltPhotosetQuota
return (u,b,f,s)