module Pinboard.ApiRequest
(
getPostsRecentRequest,
getPostsForDateRequest,
getPostsAllRequest,
getPostsDatesRequest,
getPostsMRUTimeRequest,
getSuggestedTagsRequest,
addPostRequest,
deletePostRequest,
getTagsRequest,
renameTagRequest,
deleteTagRequest,
getUserSecretRssKeyRequest,
getUserApiTokenRequest,
getNoteListRequest,
getNoteRequest,
) where
import Prelude hiding (unwords)
import Pinboard.Client.Types (PinboardRequest (..), Param (..))
import Pinboard.Client.Util ((</>))
import Control.Applicative ((<$>))
import Data.Text (unwords)
import Data.Maybe (catMaybes)
import Pinboard.ApiTypes
getPostsRecentRequest
:: Maybe [Tag]
-> Maybe Count
-> PinboardRequest
getPostsRecentRequest tags count = PinboardRequest path params
where
path = "posts/recent"
params = catMaybes [ Tag . unwords <$> tags
, Count <$> count ]
getPostsAllRequest
:: Maybe [Tag]
-> Maybe StartOffset
-> Maybe NumResults
-> Maybe FromDateTime
-> Maybe ToDateTime
-> Maybe Meta
-> PinboardRequest
getPostsAllRequest tags start results fromdt todt meta =
PinboardRequest path params
where
path = "posts/all"
params = catMaybes [ Tag . unwords <$> tags
, Start <$> start
, Results <$> results
, FromDateTime <$> fromdt
, ToDateTime <$> todt
, Meta <$> meta
]
getPostsForDateRequest
:: Maybe [Tag]
-> Maybe Date
-> Maybe Url
-> PinboardRequest
getPostsForDateRequest tags date url = PinboardRequest path params
where
path = "posts/get"
params = catMaybes [ Tag . unwords <$> tags
, Date <$> date
, Url <$> url ]
getPostsDatesRequest
:: Maybe [Tag]
-> PinboardRequest
getPostsDatesRequest tags = PinboardRequest path params
where
path = "posts/dates"
params = catMaybes [ Tag . unwords <$> tags ]
getPostsMRUTimeRequest
:: PinboardRequest
getPostsMRUTimeRequest = PinboardRequest path params
where
path = "posts/update"
params = []
getSuggestedTagsRequest
:: Url
-> PinboardRequest
getSuggestedTagsRequest url = PinboardRequest path params
where
path = "posts/suggest"
params = [ Url url ]
deletePostRequest
:: Url
-> PinboardRequest
deletePostRequest url = PinboardRequest path params
where
path = "posts/delete"
params = [Url url]
addPostRequest
:: Url
-> Description
-> Maybe Extended
-> Maybe [Tag]
-> Maybe DateTime
-> Maybe Replace
-> Maybe Shared
-> Maybe ToRead
-> PinboardRequest
addPostRequest url descr ext tags ctime repl shared toread =
PinboardRequest path params
where
path = "posts/add"
params = catMaybes [ Just $ Url url
, Just $ Description descr
, Extended <$> ext
, Tags . unwords <$> tags
, DateTime <$> ctime
, Replace <$> repl
, Shared <$> shared
, ToRead <$> toread ]
getTagsRequest
:: PinboardRequest
getTagsRequest = PinboardRequest path params
where
path = "tags/get"
params = []
deleteTagRequest
:: Tag
-> PinboardRequest
deleteTagRequest tag = PinboardRequest path params
where
path = "tags/delete"
params = [Tag tag]
renameTagRequest
:: Old
-> New
-> PinboardRequest
renameTagRequest old new = PinboardRequest path params
where
path = "tags/rename"
params = [Old old, New new]
getUserSecretRssKeyRequest
:: PinboardRequest
getUserSecretRssKeyRequest = PinboardRequest path params
where
path = "user/secret"
params = []
getUserApiTokenRequest
:: PinboardRequest
getUserApiTokenRequest = PinboardRequest path params
where
path = "user/api_token"
params = []
getNoteListRequest
:: PinboardRequest
getNoteListRequest = PinboardRequest path params
where
path = "notes/list"
params = []
getNoteRequest
:: NoteId
-> PinboardRequest
getNoteRequest noteid = PinboardRequest path params
where
path = "notes" </> noteid
params = []