module Flickr.URLs
( getGroup
, getUserPhotos
, getUserProfile
, lookupGroup
, lookupUser
, photoSourceURL
, userProfilePageURL
, userPhotoStreamURL
, userPhotoURL
, userPhotosetsURL
, userPhotosetURL
) where
import Flickr.Monad
import Flickr.Types
import Flickr.Types.Import
import Data.Maybe
getGroup :: GroupID -> FM URLString
getGroup gid = do
flickTranslate (toString "url") $
flickCall "flickr.urls.getGroup" [("group_id", gid)]
getUserPhotos :: Maybe UserID -> FM URLString
getUserPhotos mb = do
flickTranslate (toString "url") $
flickCall "flickr.urls.getUserPhotos"
(maybeToList (fmap (\ x -> ("user_id", x)) mb))
getUserProfile :: Maybe UserID -> FM URLString
getUserProfile mb = do
flickTranslate (toString "url") $
flickCall "flickr.urls.getUserProfile"
(maybeToList (fmap (\ x -> ("user_id", x)) mb))
lookupGroup :: URLString -> FM Group
lookupGroup u = do
flickTranslate toGroup $
flickCall "flickr.urls.lookupGroup" [("url", u)]
lookupUser :: URLString -> FM User
lookupUser u = do
flickTranslate toUser $
flickCall "flickr.urls.lookupUser" [("url", u)]
photoSourceURL :: PhotoDetails -> PhotoSize -> URLString
photoSourceURL p sz =
case photoURL ph of
Just u -> u
_ ->
"http://farm" ++ fid ++ ".static.flickr.com/" ++ sid ++
'/':pid ++ '_':sec ++ suff
where
ph = photoDetailsPhoto p
fid = fromMaybe "1" (photoFarm ph)
sid = fromMaybe "1" (fmap show $ photoServer ph)
pid = photoId ph
sec =
case sz of
PhotoSizeOriginal -> fromMaybe "1" (photoDetailsOrigSecret p)
_ -> photoSecret ph
suff =
case sz of
PhotoSizeMedium -> ".jpg"
PhotoSizeOriginal -> "_o." ++ fromMaybe "jpg" (photoDetailsOrigFormat p)
PhotoSizeSmallSquare -> "_s.jpg"
PhotoSizeThumb -> "_t.jpg"
PhotoSizeSmall -> "_m.jpg"
PhotoSizeLarge -> "_b.jpg"
userProfilePageURL :: User -> URLString
userProfilePageURL u =
"http://www.flickr.com/people/" ++ userId u ++ "/"
userPhotoStreamURL :: User -> URLString
userPhotoStreamURL u =
"http://www.flickr.com/photos/" ++ userId u ++ "/"
userPhotoURL :: User -> PhotoID -> URLString
userPhotoURL u pid =
"http://www.flickr.com/photos/" ++ userId u ++ '/':pid
userPhotosetsURL :: User -> URLString
userPhotosetsURL u =
"http://www.flickr.com/photos/" ++ userId u ++ "/sets/"
userPhotosetURL :: User -> PhotosetID -> URLString
userPhotosetURL u p =
"http://www.flickr.com/photos/" ++ userId u ++ "/sets/" ++ p