| 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 ClientError 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]
- tournamentRecaps :: TournamentId -> RatingClient [RecapTeam]
- 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)
- tournamentSearch :: Maybe TournamentType -> Maybe Int -> Maybe Int -> RatingClient (Items TournamentShort)
- getAllItems :: (Maybe Int -> RatingClient (Items a)) -> RatingClient [a]
Работа с API
type RatingClient = ClientM Source #
Синоним типа для реэкспорта. Монада, в которой возможно выполнять запросы к REST API сайта рейтинга
Arguments
| :: RatingClient a | Набор команд, работающих с API сайта рейтинга |
| -> IO (Either ClientError a) | Результат работы, либо ошибка |
Запуск клиента API сайта рейтинга
Все запросы внутри RatingClient используют один и тот же менеджер соединений
Информация об игроках
Arguments
| :: Maybe Int | Номер страницы в результате |
| -> RatingClient (Items Player) | Список игроков, по 1000 элементов |
Список всех игроков
Запрос /players
Arguments
| :: PlayerId | Идентификатор игрока |
| -> RatingClient [Player] | Информация об игроке, список из единственного элемента |
Информация об игроке
API NOTE. Результат должен быть Player, а не список игроков из одного элемента
Запрос /players/:id
О командах игроков
Arguments
| :: PlayerId | Идентификатор игрока |
| -> RatingClient [PlayerTeam] | Список команд игрока |
Команды, в базовых составах которых играл игрок
Запрос /players/:id/teams
Arguments
| :: PlayerId | Идентификатор игрока |
| -> RatingClient [PlayerTeam] | Список команд игрока |
Команды, в базовый состав которых игрок входит в текущем сезоне
Запрос /players/:id/teams/last
Arguments
| :: PlayerId | Идентификатор игрока |
| -> Int | Идентификатор сезона |
| -> RatingClient [PlayerTeam] | Список команд игрока |
Команды, в базовый состав которых игрок входил в указанном сезоне
Запрос /players/:id/teams/:season
О турнирах игроков
Arguments
| :: PlayerId | Идентификатор игрока |
| -> RatingClient (SeasonMap PlayerSeason) | Турниры игрока по сезонам |
Турниры, которые отыграл игрок, по сезонам
Запрос /players/:id/tournaments
Arguments
| :: PlayerId | Идентификатор игрока |
| -> RatingClient PlayerSeason |
Турниры, которые игрок отыграл в текущем сезоне
Запрос /players/:id/tournaments/last
Arguments
| :: PlayerId | Идентификатор игрока |
| -> Int | Идентификатор сезона |
| -> RatingClient PlayerSeason |
Турниры, которые игрок отыграл в указанном сезоне
Запрос /players/:id/tournaments/:season
О рейтингах игроков
Arguments
| :: PlayerId | Идентификатор игрока |
| -> RatingClient [PlayerRating] | Список рейтингов игрока, порядок не определён |
Рейтинги игрока
Запрос /players/:id/rating
Arguments
| :: PlayerId | Идентификатор игрока |
| -> RatingClient PlayerRating |
Рейтинг игрока в последнем релизе
API NOTE. Работает не всегда: например, для 54345 в декабре 2018 ничего не возвращало (off-by-one error?)
Запрос /players/:id/rating/last
Arguments
| :: PlayerId | Идентификатор игрока |
| -> Int | Идентификатор релиза |
| -> RatingClient PlayerRating |
Рейтинг игрока в указанном релизе
Запрос /players/:id/rating/:release
Информация о командах
Arguments
| :: Maybe Int | Номер страницы в результате |
| -> RatingClient (Items Team) | Команды по 1000 элементов |
Список всех команд
Запрос /teams
Arguments
| :: TeamId | Идентификатор команды |
| -> RatingClient [Team] | Команда, список из единственного элемента |
Информация о команде
API NOTE: должна быть команда, а не список из команд
Запрос /teams/:id
Базовые составы
Arguments
| :: TeamId | Идентификатор команды |
| -> RatingClient (SeasonMap TeamBaseRecap) | Базовые составы по сезонам |
Базовые составы команды
Запрос /teams/:id/recaps
Arguments
| :: TeamId | Идентификатор команды |
| -> RatingClient TeamBaseRecap |
Базовый состав команды в последнем сезоне
Запрос /teams/:id/recaps/last
Arguments
| :: TeamId | Идентификатор команды |
| -> Int | Идентификатор сезона |
| -> RatingClient TeamBaseRecap |
Базовый состав команды в указанном сезоне
Запрос /teams/:id/recaps/:season
Отыгранные турниры
Arguments
| :: TeamId | Идентификатор команды |
| -> RatingClient (SeasonMap TeamTournament) | Турниры команды по сезонам |
Турниры, отыгранные командой
Запрос /teams/:id/tournaments
Arguments
| :: TeamId | Идентификатор команды |
| -> RatingClient TeamTournament |
Турниры, отыгранные командой в последнем сезоне
Запрос /teams/:id/tournaments/last
Arguments
| :: TeamId | Идентификатор команды |
| -> Int | Идентификатор сезона |
| -> RatingClient TeamTournament |
Турниры, отыгранные командой в указанном сезоне
Запрос /teams/:id/tournaments/:season
Рейтинги
Arguments
| :: TeamId | Идентификатор команды |
| -> RatingClient [TeamRating] | Список рейтингов команды, порядок не определён |
Рейтинги команды
Запрос /teams/:id/rating
Arguments
| :: TeamId | Идентификатор команды |
| -> RatingClient TeamRating |
Последний рейтинг команды по формуле A
API NOTE. Работает не всегда: для 1 ничего не возвращает (off-by-one error?)
Запрос /teams/:id/rating/a
Arguments
| :: TeamId | Идентификатор команды |
| -> RatingClient TeamRating |
Последний рейтинг команды по формуле B
API NOTE. Работает не всегда: для 1 ничего не возвращает (off-by-one error?)
Запрос /teams/:id/rating/b
Arguments
| :: TeamId | Идентификатор команды |
| -> Int | Идентификатор релиза |
| -> RatingClient TeamRating |
Рейтинг команды в указанном релизе
Запрос /teams/:id/rating/:release
Информация о турнирах
Arguments
| :: Maybe Int | Номер страницы ( |
| -> RatingClient (Items TournamentShort) | Информация о турнирах по 1000 элементов |
Список всех турниров
Запрос /tournaments
Arguments
| :: TournamentId | Идентификатор турнира |
| -> RatingClient [Tournament] | Единственный элемент списка - турнир |
Информация о турнире
API NOTE: должен быть турнир, а не список турниров
Запрос /tournaments/:id
Результаты турнира
Arguments
| :: TournamentId | Идентификатор турнира |
| -> RatingClient [TournamentResult] | Результаты по командам, порядок не определён |
Результаты турнира
Запрос /tournaments/:id/list
tournamentResultsTown Source #
Arguments
| :: TournamentId | Идентификатор турнира |
| -> Int | Идентификатор города |
| -> RatingClient [TournamentResult] | Результаты по командам, порядок не определён |
Результаты турнира для команд города
Запрос /tournaments/:id/list/town/:town
tournamentResultsRegion Source #
Arguments
| :: TournamentId | Идентификатор турнира |
| -> Int | Идентификатор региона |
| -> RatingClient [TournamentResult] | Результаты по командам, порядок не определён |
Результаты турнира для команд региона
Запрос /tournaments/:id/list/region/:region
tournamentResultsCountry Source #
Arguments
| :: TournamentId | Идентификатор турнира |
| -> Int | Идентификатор страны |
| -> RatingClient [TournamentResult] | Результаты по командам, порядок не определён |
Результаты турнира для команд страны
Запрос /tournaments/:id/list/country/:country
Arguments
| :: TournamentId | Идентификатор турнира |
| -> TeamId | Идентификатор команды |
| -> RatingClient [TourResult] | Список результатов по турам |
Результат указанной команды на турнире
Запрос /tournaments/:id/results/:team
Составы на турнире
Arguments
| :: TournamentId | Идентификаторр турнира |
| -> RatingClient [RecapTeam] |
Составы команд на турнире
Запрос /tournaments/:id/recaps
Since: 0.3.6.4
Arguments
| :: TournamentId | Идентификатор турнира |
| -> TeamId | Идентификатор команды |
| -> RatingClient [RecapPlayer] | Список игроков с флагами К/Б/Л |
Составы указанной команды на турнире
Запрос /tournaments/:id/recaps/:team
Спорные и апелляции
tournamentControversials Source #
Arguments
| :: TournamentId | Идентификатор турнира |
| -> RatingClient [Controversial] | Спорные |
Спорные на турнире
Запрос /tournaments/:id/controversials
Since: 0.3.6.3
Arguments
| :: TournamentId | Идентификатор турнира |
| -> RatingClient [Appeal] | Апелляции |
Апелляции на турнире
Запрос /tournaments/:id/appeals
Since: 0.3.6.3
Различные способы поиска
В функции поиска передаётся несколько значений типа '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 элементов |
Поиск по командам
Запрос /teams/search
Arguments
| :: Maybe Text | Фамилия |
| -> Maybe Text | Имя |
| -> Maybe Text | Отчество |
| -> Maybe Int | Номер страницы в результате |
| -> RatingClient (Items Player) | Список игроков по 1000 элементов |
Поиск по игрокам
Запрос /players/search
Arguments
| :: Maybe TournamentType | Тип турнира |
| -> Maybe Int | Находится ли турнир в архиве (0 - не находится, 1 - находится) |
| -> Maybe Int | Номер страницы в результате |
| -> RatingClient (Items TournamentShort) |
Поиск по турнирам
Запрос /tournaments/search
Вспомогательные функции
Arguments
| :: (Maybe Int -> RatingClient (Items a)) | Запрос с разбиением на страницы |
| -> RatingClient [a] | Список всех элементов |
Получение всех элементов из запроса с разбиением по страницам
В функции предполагается, что сайт рейтинга, как и указано в документации, разбивает ответ на куски по 1000 элементов