module Network.Lastfm.API.User
( getArtistTracks, getBannedTracks, getEvents, getFriends, getInfo, getLovedTracks
, getNeighbours, getNewReleases, getPastEvents, getPersonalTags, getPlaylists, getRecentStations
, getRecentTracks, getRecommendedArtists, getRecommendedEvents, getShouts, getTopAlbums
, getTopArtists, getTopTags, getTopTracks, getWeeklyAlbumChart, getWeeklyArtistChart
, getWeeklyChartList, getWeeklyTrackChart, shout
) where
import Control.Monad.Error (runErrorT)
import Network.Lastfm
getArtistTracks :: User -> Artist -> Maybe StartTimestamp -> Maybe EndTimestamp -> Maybe Page -> APIKey -> Lastfm Response
getArtistTracks user artist startTimestamp endTimestamp page apiKey = callAPI
[ (#) (Method "user.getArtistTracks")
, (#) user
, (#) artist
, (#) startTimestamp
, (#) page
, (#) endTimestamp
, (#) apiKey
]
getBannedTracks :: User -> Maybe Page -> Maybe Limit -> APIKey -> Lastfm Response
getBannedTracks user page limit apiKey = callAPI
[ (#) (Method "user.getBannedTracks")
, (#) user
, (#) page
, (#) limit
, (#) apiKey
]
getEvents :: User -> Maybe Page -> Maybe Limit -> Maybe FestivalsOnly -> APIKey -> Lastfm Response
getEvents user page limit festivalsOnly apiKey = callAPI
[ (#) (Method "user.getEvents")
, (#) user
, (#) page
, (#) limit
, (#) festivalsOnly
, (#) apiKey
]
getFriends :: User -> Maybe RecentTracks -> Maybe Page -> Maybe Limit -> APIKey -> Lastfm Response
getFriends user recentTracks page limit apiKey = callAPI
[ (#) (Method "user.getFriends")
, (#) user
, (#) recentTracks
, (#) page
, (#) limit
, (#) apiKey
]
getInfo :: Maybe User -> APIKey -> Lastfm Response
getInfo user apiKey = callAPI
[ (#) (Method "user.getInfo")
, (#) user
, (#) apiKey
]
getLovedTracks :: User -> Maybe Page -> Maybe Limit -> APIKey -> Lastfm Response
getLovedTracks user page limit apiKey = callAPI
[ (#) (Method "user.getLovedTracks")
, (#) user
, (#) page
, (#) limit
, (#) apiKey
]
getNeighbours :: User -> Maybe Limit -> APIKey -> Lastfm Response
getNeighbours user limit apiKey = callAPI
[ (#) (Method "user.getNeighbours")
, (#) user
, (#) limit
, (#) apiKey
]
getNewReleases :: User -> Maybe UseRecs -> APIKey -> Lastfm Response
getNewReleases user useRecs apiKey = callAPI
[ (#) (Method "user.getNewReleases")
, (#) user
, (#) useRecs
, (#) apiKey
]
getPastEvents :: User -> Maybe Page -> Maybe Limit -> APIKey -> Lastfm Response
getPastEvents user page limit apiKey = callAPI
[ (#) (Method "user.getPastEvents")
, (#) user
, (#) page
, (#) limit
, (#) apiKey
]
getPersonalTags :: User
-> Tag
-> TaggingType
-> Maybe Page
-> Maybe Limit
-> APIKey
-> Lastfm Response
getPersonalTags user tag taggingType page limit apiKey = callAPI
[ (#) (Method "user.getPersonalTags")
, (#) user
, (#) tag
, (#) taggingType
, (#) page
, (#) limit
, (#) apiKey
]
getPlaylists :: User -> APIKey -> Lastfm Response
getPlaylists user apiKey = callAPI
[ (#) (Method "user.getPlaylists")
, (#) user
, (#) apiKey
]
getRecentStations :: User -> Maybe Page -> Maybe Limit -> APIKey -> SessionKey -> Secret -> Lastfm Response
getRecentStations user page limit apiKey sessionKey secret = callAPIsigned secret
[ (#) (Method "user.getRecentStations")
, (#) user
, (#) page
, (#) limit
, (#) apiKey
, (#) sessionKey
]
getRecentTracks :: User -> Maybe Page -> Maybe Limit -> Maybe From -> Maybe To -> APIKey -> Lastfm Response
getRecentTracks user page limit from to apiKey = callAPI
[ (#) (Method "user.getRecentTracks")
, (#) user
, (#) page
, (#) limit
, (#) from
, (#) to
, (#) apiKey
]
getRecommendedArtists :: Maybe Page -> Maybe Limit -> APIKey -> SessionKey -> Secret -> Lastfm Response
getRecommendedArtists page limit apiKey sessionKey secret = callAPIsigned secret
[ (#) (Method "user.getRecommendedArtists")
, (#) page
, (#) limit
, (#) apiKey
, (#) sessionKey
]
getRecommendedEvents :: Maybe Page -> Maybe Limit -> APIKey -> SessionKey -> Secret -> Lastfm Response
getRecommendedEvents page limit apiKey sessionKey secret = callAPIsigned secret
[ (#) (Method "user.getRecommendedEvents")
, (#) page
, (#) limit
, (#) apiKey
, (#) sessionKey
]
getShouts :: User -> Maybe Page -> Maybe Limit -> APIKey -> Lastfm Response
getShouts user page limit apiKey = callAPI
[ (#) (Method "user.getShouts")
, (#) user
, (#) page
, (#) limit
, (#) apiKey
]
getTopAlbums :: User -> Maybe Period -> Maybe Page -> Maybe Limit -> APIKey -> Lastfm Response
getTopAlbums user period page limit apiKey = callAPI
[ (#) (Method "user.getTopAlbums")
, (#) user
, (#) period
, (#) page
, (#) limit
, (#) apiKey
]
getTopArtists :: User -> Maybe Period -> Maybe Page -> Maybe Limit -> APIKey -> Lastfm Response
getTopArtists user period page limit apiKey = callAPI
[ (#) (Method "user.getTopArtists")
, (#) user
, (#) period
, (#) page
, (#) limit
, (#) apiKey
]
getTopTags :: User -> Maybe Limit -> APIKey -> Lastfm Response
getTopTags user limit apiKey = callAPI
[ (#) (Method "user.getTopTags")
, (#) user
, (#) limit
, (#) apiKey
]
getTopTracks :: User -> Maybe Period -> Maybe Page -> Maybe Limit -> APIKey -> Lastfm Response
getTopTracks user period page limit apiKey = callAPI
[ (#) (Method "user.getTopTracks")
, (#) user
, (#) period
, (#) page
, (#) limit
, (#) apiKey
]
getWeeklyAlbumChart :: User -> Maybe From -> Maybe To -> APIKey -> Lastfm Response
getWeeklyAlbumChart user from to apiKey = callAPI
[ (#) (Method "user.getWeeklyAlbumChart")
, (#) user
, (#) from
, (#) to
, (#) apiKey
]
getWeeklyArtistChart :: User -> Maybe From -> Maybe To -> APIKey -> Lastfm Response
getWeeklyArtistChart user from to apiKey = callAPI
[ (#) (Method "user.getWeeklyArtistChart")
, (#) user
, (#) from
, (#) to
, (#) apiKey
]
getWeeklyChartList :: User -> APIKey -> Lastfm Response
getWeeklyChartList user apiKey = callAPI
[ (#) (Method "user.getWeeklyChartList")
, (#) user
, (#) apiKey
]
getWeeklyTrackChart :: User -> Maybe From -> Maybe To -> APIKey -> Lastfm Response
getWeeklyTrackChart user from to apiKey = callAPI
[ (#) (Method "user.getWeeklyTrackChart")
, (#) user
, (#) from
, (#) to
, (#) apiKey
]
shout :: User -> Message -> APIKey -> SessionKey -> Secret -> Lastfm Response
shout user message apiKey sessionKey secret = callAPIsigned secret
[ (#) (Method "user.shout")
, (#) user
, (#) message
, (#) apiKey
, (#) sessionKey
]