Copyright | (c) Mansur Ziiatdinov 2018-2019 |
---|---|
License | BSD-3 |
Maintainer | chgk@pm.me |
Stability | experimental |
Portability | POSIX |
Safe Haskell | None |
Language | Haskell2010 |
Функции здесь повторяют те запросы, которые доступны в API сайта рейтинга. Те
функции, которые недоступны через API, реализованы в NoApi
.
Кроме того, есть вспомогательная функция getAllItems
для удобства.
Synopsis
- type RatingClient = ClientM
- runRatingApi :: RatingClient a -> IO (Either ServantError a)
- players :: Maybe Int -> RatingClient (Items Player)
- player :: PlayerId -> RatingClient [Player]
- playerTeams :: PlayerId -> RatingClient [PlayerTeam]
- playerLastTeam :: PlayerId -> RatingClient [PlayerTeam]
- playerTeam :: PlayerId -> Int -> RatingClient [PlayerTeam]
- playerTournaments :: PlayerId -> RatingClient (SeasonMap PlayerSeason)
- playerLastTournament :: PlayerId -> RatingClient PlayerSeason
- playerTournament :: PlayerId -> Int -> RatingClient PlayerSeason
- playerRatings :: PlayerId -> RatingClient [PlayerRating]
- playerLastRating :: PlayerId -> RatingClient PlayerRating
- playerRating :: PlayerId -> Int -> RatingClient PlayerRating
- teams :: Maybe Int -> RatingClient (Items Team)
- team :: TeamId -> RatingClient [Team]
- teamBaseRecaps :: TeamId -> RatingClient (SeasonMap TeamBaseRecap)
- teamLastBaseRecap :: TeamId -> RatingClient TeamBaseRecap
- teamBaseRecap :: TeamId -> Int -> RatingClient TeamBaseRecap
- teamTournaments :: TeamId -> RatingClient (SeasonMap TeamTournament)
- teamLastTournament :: TeamId -> RatingClient TeamTournament
- teamTournament :: TeamId -> Int -> RatingClient TeamTournament
- teamRatings :: TeamId -> RatingClient [TeamRating]
- teamRatingA :: TeamId -> RatingClient TeamRating
- teamRatingB :: TeamId -> RatingClient TeamRating
- teamRating :: TeamId -> Int -> RatingClient TeamRating
- tournaments :: Maybe Int -> RatingClient (Items TournamentShort)
- tournament :: TournamentId -> RatingClient [Tournament]
- tournamentResults :: TournamentId -> RatingClient [TournamentResult]
- tournamentResultsTown :: TournamentId -> Int -> RatingClient [TournamentResult]
- tournamentResultsRegion :: TournamentId -> Int -> RatingClient [TournamentResult]
- tournamentResultsCountry :: TournamentId -> Int -> RatingClient [TournamentResult]
- tournamentTeamResult :: TournamentId -> TeamId -> RatingClient [TourResult]
- tournamentRecap :: TournamentId -> TeamId -> RatingClient [RecapPlayer]
- tournamentControversials :: TournamentId -> RatingClient [Controversial]
- tournamentAppeals :: TournamentId -> RatingClient [Appeal]
- teamSearch :: Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Bool -> Maybe Int -> RatingClient (Items Team)
- playerSearch :: Maybe Text -> Maybe Text -> Maybe Text -> Maybe Int -> RatingClient (Items Player)
- getAllItems :: (Maybe Int -> RatingClient (Items a)) -> RatingClient [a]
Работа с API
type RatingClient = ClientM Source #
Синоним типа для реэкспорта. Монада, в которой возможно выполнять запросы к REST API сайта рейтинга
:: RatingClient a | Набор команд, работающих с API сайта рейтинга |
-> IO (Either ServantError a) | Результат работы, либо ошибка |
Запуск клиента API сайта рейтинга
Все запросы внутри RatingClient
используют один и тот же менеджер соединений
Информация об игроках
:: Maybe Int | Номер страницы в результате |
-> RatingClient (Items Player) | Список игроков, по 1000 элементов |
Список всех игроков
:: PlayerId | Идентификатор игрока |
-> RatingClient [Player] | Информация об игроке, список из единственного элемента |
Информация об игроке
API NOTE. Результат должен быть Player
, а не список игроков из одного элемента
О командах игроков
:: PlayerId | Идентификатор игрока |
-> RatingClient [PlayerTeam] | Список команд игрока |
Команды, в базовых составах которых играл игрок
:: PlayerId | Идентификатор игрока |
-> RatingClient [PlayerTeam] | Список команд игрока |
Команды, в базовый состав которых игрок входит в текущем сезоне
:: PlayerId | Идентификатор игрока |
-> Int | Идентификатор сезона |
-> RatingClient [PlayerTeam] | Список команд игрока |
Команды, в базовый состав которых игрок входил в указанном сезоне
О турнирах игроков
:: PlayerId | Идентификатор игрока |
-> RatingClient (SeasonMap PlayerSeason) | Турниры игрока по сезонам |
Турниры, которые отыграл игрок, по сезонам
:: PlayerId | Идентификатор игрока |
-> RatingClient PlayerSeason |
Турниры, которые игрок отыграл в текущем сезоне
:: PlayerId | Идентификатор игрока |
-> Int | Идентификатор сезона |
-> RatingClient PlayerSeason |
Турниры, которые игрок отыграл в указанном сезоне
О рейтингах игроков
:: PlayerId | Идентификатор игрока |
-> RatingClient [PlayerRating] | Список рейтингов игрока, порядок не определён |
Рейтинги игрока
:: PlayerId | Идентификатор игрока |
-> RatingClient PlayerRating |
Рейтинг игрока в последнем релизе
API NOTE. Работает не всегда: например, для 54345 в декабре 2018 ничего не возвращало (off-by-one error?)
:: PlayerId | Идентификатор игрока |
-> Int | Идентификатор релиза |
-> RatingClient PlayerRating |
Рейтинг игрока в указанном релизе
Информация о командах
:: Maybe Int | Номер страницы в результате |
-> RatingClient (Items Team) | Команды по 1000 элементов |
Список всех команд
:: TeamId | Идентификатор команды |
-> RatingClient [Team] | Команда, список из единственного элемента |
Информация о команде
API NOTE: должна быть команда, а не список из команд
Базовые составы
:: TeamId | Идентификатор команды |
-> RatingClient (SeasonMap TeamBaseRecap) | Базовые составы по сезонам |
Базовые составы команды
:: TeamId | Идентификатор команды |
-> RatingClient TeamBaseRecap |
Базовый состав команды в последнем сезоне
:: TeamId | Идентификатор команды |
-> Int | Идентификатор сезона |
-> RatingClient TeamBaseRecap |
Базовый состав команды в указанном сезоне
Отыгранные турниры
:: TeamId | Идентификатор команды |
-> RatingClient (SeasonMap TeamTournament) | Турниры команды по сезонам |
Турниры, отыгранные командой
:: TeamId | Идентификатор команды |
-> RatingClient TeamTournament |
Турниры, отыгранные командой в последнем сезоне
:: TeamId | Идентификатор команды |
-> Int | Идентификатор сезона |
-> RatingClient TeamTournament |
Турниры, отыгранные командой в указанном сезоне
Рейтинги
:: TeamId | Идентификатор команды |
-> RatingClient [TeamRating] | Список рейтингов команды, порядок не определён |
Рейтинги команды
:: TeamId | Идентификатор команды |
-> RatingClient TeamRating |
Последний рейтинг команды по формуле A
API NOTE. Работает не всегда: для 1 ничего не возвращает (off-by-one error?)
:: TeamId | Идентификатор команды |
-> RatingClient TeamRating |
Последний рейтинг команды по формуле B
API NOTE. Работает не всегда: для 1 ничего не возвращает (off-by-one error?)
:: TeamId | Идентификатор команды |
-> Int | Идентификатор релиза |
-> RatingClient TeamRating |
Рейтинг команды в указанном релизе
Информация о турнирах
:: Maybe Int | Номер страницы в результате |
-> RatingClient (Items TournamentShort) | Информация о турнирах по 1000 элементов |
Список всех турниров
:: TournamentId | Идентификатор турнира |
-> RatingClient [Tournament] | Единственный элемент списка - турнир |
Информация о турнире
API NOTE: должен быть турнир, а не список турниров
Результаты турнира
:: TournamentId | Идентификатор турнира |
-> RatingClient [TournamentResult] | Результаты по командам, порядок не определён |
Результаты турнира
tournamentResultsTown Source #
:: TournamentId | Идентификатор турнира |
-> Int | Идентификатор города |
-> RatingClient [TournamentResult] | Результаты по командам, порядок не определён |
Результаты турнира для команд города
tournamentResultsRegion Source #
:: TournamentId | Идентификатор турнира |
-> Int | Идентификатор региона |
-> RatingClient [TournamentResult] | Результаты по командам, порядок не определён |
Результаты турнира для команд региона
tournamentResultsCountry Source #
:: TournamentId | Идентификатор турнира |
-> Int | Идентификатор страны |
-> RatingClient [TournamentResult] | Результаты по командам, порядок не определён |
Результаты турнира для команд страны
:: TournamentId | Идентификатор турнира |
-> TeamId | Идентификатор команды |
-> RatingClient [TourResult] | Список результатов по турам |
Результат указанной команды на турнире
Составы на турнире
:: TournamentId | Идентификатор турнира |
-> TeamId | Идентификатор команды |
-> RatingClient [RecapPlayer] | Список игроков с флагами К/Б/Л |
Составы указанной команды на турнире
Спорные и апелляции
tournamentControversials Source #
:: TournamentId | Идентификатор турнира |
-> RatingClient [Controversial] | Спорные |
Спорные на турнире
:: TournamentId | Идентификатор турнира |
-> RatingClient [Appeal] | Апелляции |
Апелляции на турнире
Различные способы поиска
В функции поиска передаётся несколько значений типа 'Maybe a'. Если соответствующее значение установлено, по этому параметру производится поиск. Если установлено несколько значений, они объединяются при помощи логической связки И.
:: Maybe Text | Название (name) |
-> Maybe Text | Город (town) |
-> Maybe Text | Регион (region_name) |
-> Maybe Text | Страна (country_name) |
-> Bool | Играла в текущем сезоне (active_this_season) |
-> Maybe Int | Номер страницы в результате |
-> RatingClient (Items Team) | Список команд по 1000 элементов |
Поиск по командам
:: Maybe Text | Фамилия |
-> Maybe Text | Имя |
-> Maybe Text | Отчество |
-> Maybe Int | Номер страницы в результате |
-> RatingClient (Items Player) | Список игроков по 1000 элементов |
Поиск по игрокам
Вспомогательные функции
:: (Maybe Int -> RatingClient (Items a)) | Запрос с разбиением на страницы |
-> RatingClient [a] | Список всех элементов |
Получение всех элементов из запроса с разбиением по страницам
В функции предполагается, что сайт рейтинга, как и указано в документации, разбивает ответ на куски по 1000 элементов