--------------------------------------------------------------------
-- |
-- Module      : FriendFeed.Entry
-- Description : Entry-specific FriendFeed API calls.
-- Copyright   : (c) Sigbjorn Finne, 2008
-- License     : BSD3
--
-- Maintainer: Sigbjorn Finne <sof@forkIO.com>
-- Stability : provisional
-- Portability: portable
--
-- Entry-specific FriendFeed API calls.
-- 
--------------------------------------------------------------------
module FriendFeed.Entry where

import FriendFeed.Types
import FriendFeed.Types.Import ()
import FriendFeed.Monad

import Data.List

getIdEntry :: UUID -> FFm Entry
getIdEntry uuid = authCall $
  ffeedTranslate $
    ffeedCall ["feed","entry",uuid] []

getIdEntries :: [UUID] -> FFm [Entry]
getIdEntries us =
  ffeedTranslateLs "entries" $
   ffeedCall ["feed","entry"] [("entry_id", intercalate "," us)]

-- | Returns the entries the authenticated user would see on their 
-- FriendFeed homepage - all of their subscriptions and 
-- friend-of-a-friend entries.
getFriendEntries :: FFm [Entry]
getFriendEntries = authCall $
  ffeedTranslateLs "entries" $
   ffeedCall ["feed","home"] []

getURLEntries :: URLString -> FFm [Entry]
getURLEntries u = authCall $ 
  ffeedTranslateLs "entries" $
   ffeedCall ["feed","url"]
             [("url",u)]

getDomainEntries :: [String] -> Bool -> Bool -> FFm [Entry]
getDomainEntries ds inExact isSubscribed = authCall $
  ffeedTranslateLs "entries" $
   ffeedCall ["feed","domain"]
             ((if isSubscribed then (("subscribed","1"):) else id) $
              (if inExact then (("inexact","1"):) else id) 
	         [("domain",intercalate "," ds)])
  -- ToDo: add nickname filtering/restriction