| Copyright | (c) Mansur Ziiatdinov 2018-2019 |
|---|---|
| License | BSD-3 |
| Maintainer | chgk@pm.me |
| Stability | experimental |
| Portability | POSIX |
| Safe Haskell | None |
| Language | Haskell2010 |
RatingChgkInfo.Api
Contents
Description
Функции здесь повторяют те запросы, которые доступны в 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 сайта рейтинга
Arguments
| :: RatingClient a | Набор команд, работающих с API сайта рейтинга |
| -> IO (Either ServantError a) | Результат работы, либо ошибка |
Запуск клиента API сайта рейтинга
Все запросы внутри RatingClient используют один и тот же менеджер соединений
Информация об игроках
Arguments
| :: Maybe Int | Номер страницы в результате |
| -> RatingClient (Items Player) | Список игроков, по 1000 элементов |
Список всех игроков
Arguments
| :: PlayerId | Идентификатор игрока |
| -> RatingClient [Player] | Информация об игроке, список из единственного элемента |
Информация об игроке
API NOTE. Результат должен быть Player, а не список игроков из одного элемента
О командах игроков
Arguments
| :: PlayerId | Идентификатор игрока |
| -> RatingClient [PlayerTeam] | Список команд игрока |
Команды, в базовых составах которых играл игрок
Arguments
| :: PlayerId | Идентификатор игрока |
| -> RatingClient [PlayerTeam] | Список команд игрока |
Команды, в базовый состав которых игрок входит в текущем сезоне
Arguments
| :: PlayerId | Идентификатор игрока |
| -> Int | Идентификатор сезона |
| -> RatingClient [PlayerTeam] | Список команд игрока |
Команды, в базовый состав которых игрок входил в указанном сезоне
О турнирах игроков
Arguments
| :: PlayerId | Идентификатор игрока |
| -> RatingClient (SeasonMap PlayerSeason) | Турниры игрока по сезонам |
Турниры, которые отыграл игрок, по сезонам
Arguments
| :: PlayerId | Идентификатор игрока |
| -> RatingClient PlayerSeason |
Турниры, которые игрок отыграл в текущем сезоне
Arguments
| :: PlayerId | Идентификатор игрока |
| -> Int | Идентификатор сезона |
| -> RatingClient PlayerSeason |
Турниры, которые игрок отыграл в указанном сезоне
О рейтингах игроков
Arguments
| :: PlayerId | Идентификатор игрока |
| -> RatingClient [PlayerRating] | Список рейтингов игрока, порядок не определён |
Рейтинги игрока
Arguments
| :: PlayerId | Идентификатор игрока |
| -> RatingClient PlayerRating |
Рейтинг игрока в последнем релизе
API NOTE. Работает не всегда: например, для 54345 в декабре 2018 ничего не возвращало (off-by-one error?)
Arguments
| :: PlayerId | Идентификатор игрока |
| -> Int | Идентификатор релиза |
| -> RatingClient PlayerRating |
Рейтинг игрока в указанном релизе
Информация о командах
Arguments
| :: Maybe Int | Номер страницы в результате |
| -> RatingClient (Items Team) | Команды по 1000 элементов |
Список всех команд
Arguments
| :: TeamId | Идентификатор команды |
| -> RatingClient [Team] | Команда, список из единственного элемента |
Информация о команде
API NOTE: должна быть команда, а не список из команд
Базовые составы
Arguments
| :: TeamId | Идентификатор команды |
| -> RatingClient (SeasonMap TeamBaseRecap) | Базовые составы по сезонам |
Базовые составы команды
Arguments
| :: TeamId | Идентификатор команды |
| -> RatingClient TeamBaseRecap |
Базовый состав команды в последнем сезоне
Arguments
| :: TeamId | Идентификатор команды |
| -> Int | Идентификатор сезона |
| -> RatingClient TeamBaseRecap |
Базовый состав команды в указанном сезоне
Отыгранные турниры
Arguments
| :: TeamId | Идентификатор команды |
| -> RatingClient (SeasonMap TeamTournament) | Турниры команды по сезонам |
Турниры, отыгранные командой
Arguments
| :: TeamId | Идентификатор команды |
| -> RatingClient TeamTournament |
Турниры, отыгранные командой в последнем сезоне
Arguments
| :: TeamId | Идентификатор команды |
| -> Int | Идентификатор сезона |
| -> RatingClient TeamTournament |
Турниры, отыгранные командой в указанном сезоне
Рейтинги
Arguments
| :: TeamId | Идентификатор команды |
| -> RatingClient [TeamRating] | Список рейтингов команды, порядок не определён |
Рейтинги команды
Arguments
| :: TeamId | Идентификатор команды |
| -> RatingClient TeamRating |
Последний рейтинг команды по формуле A
API NOTE. Работает не всегда: для 1 ничего не возвращает (off-by-one error?)
Arguments
| :: TeamId | Идентификатор команды |
| -> RatingClient TeamRating |
Последний рейтинг команды по формуле B
API NOTE. Работает не всегда: для 1 ничего не возвращает (off-by-one error?)
Arguments
| :: TeamId | Идентификатор команды |
| -> Int | Идентификатор релиза |
| -> RatingClient TeamRating |
Рейтинг команды в указанном релизе
Информация о турнирах
Arguments
| :: Maybe Int | Номер страницы в результате |
| -> RatingClient (Items TournamentShort) | Информация о турнирах по 1000 элементов |
Список всех турниров
Arguments
| :: TournamentId | Идентификатор турнира |
| -> RatingClient [Tournament] | Единственный элемент списка - турнир |
Информация о турнире
API NOTE: должен быть турнир, а не список турниров
Результаты турнира
Arguments
| :: TournamentId | Идентификатор турнира |
| -> RatingClient [TournamentResult] | Результаты по командам, порядок не определён |
Результаты турнира
tournamentResultsTown Source #
Arguments
| :: TournamentId | Идентификатор турнира |
| -> Int | Идентификатор города |
| -> RatingClient [TournamentResult] | Результаты по командам, порядок не определён |
Результаты турнира для команд города
tournamentResultsRegion Source #
Arguments
| :: TournamentId | Идентификатор турнира |
| -> Int | Идентификатор региона |
| -> RatingClient [TournamentResult] | Результаты по командам, порядок не определён |
Результаты турнира для команд региона
tournamentResultsCountry Source #
Arguments
| :: TournamentId | Идентификатор турнира |
| -> Int | Идентификатор страны |
| -> RatingClient [TournamentResult] | Результаты по командам, порядок не определён |
Результаты турнира для команд страны
Arguments
| :: TournamentId | Идентификатор турнира |
| -> TeamId | Идентификатор команды |
| -> RatingClient [TourResult] | Список результатов по турам |
Результат указанной команды на турнире
Составы на турнире
Arguments
| :: TournamentId | Идентификатор турнира |
| -> TeamId | Идентификатор команды |
| -> RatingClient [RecapPlayer] | Список игроков с флагами К/Б/Л |
Составы указанной команды на турнире
Спорные и апелляции
tournamentControversials Source #
Arguments
| :: TournamentId | Идентификатор турнира |
| -> RatingClient [Controversial] | Спорные |
Спорные на турнире
Arguments
| :: TournamentId | Идентификатор турнира |
| -> RatingClient [Appeal] | Апелляции |
Апелляции на турнире
Различные способы поиска
В функции поиска передаётся несколько значений типа 'Maybe a'. Если соответствующее значение установлено, по этому параметру производится поиск. Если установлено несколько значений, они объединяются при помощи логической связки И.
Arguments
| :: Maybe Text | Название (name) |
| -> Maybe Text | Город (town) |
| -> Maybe Text | Регион (region_name) |
| -> Maybe Text | Страна (country_name) |
| -> Bool | Играла в текущем сезоне (active_this_season) |
| -> Maybe Int | Номер страницы в результате |
| -> RatingClient (Items Team) | Список команд по 1000 элементов |
Поиск по командам
Arguments
| :: Maybe Text | Фамилия |
| -> Maybe Text | Имя |
| -> Maybe Text | Отчество |
| -> Maybe Int | Номер страницы в результате |
| -> RatingClient (Items Player) | Список игроков по 1000 элементов |
Поиск по игрокам
Вспомогательные функции
Arguments
| :: (Maybe Int -> RatingClient (Items a)) | Запрос с разбиением на страницы |
| -> RatingClient [a] | Список всех элементов |
Получение всех элементов из запроса с разбиением по страницам
В функции предполагается, что сайт рейтинга, как и указано в документации, разбивает ответ на куски по 1000 элементов