rating-chgk-info: Client for rating.chgk.info API and CSV tables (documentation in Russian)

[ bsd3, library, program, utility ] [ Propose Tags ] [ Report a vulnerability ]

Клиент для REST API сайта рейтинга (rating.chgk.info) и функциональности, которой нет в REST API, но которая доступна через экспорт CSV. Также содержит REST-сервер для дополнительной функциональности, доступной через CSV

Документация по типам параметров и возвращаемых значений находится в RatingChgkInfo.Types

Документация по функциям для работы с REST API находится в RatingChgkInfo.Api

Документация по функциям для работы с CSV находится в RatingChgkInfo.NoApi

Примеры работы с библиотекой находятся в папке examples

В следующем большом релизе планируется заменить в части типов для REST API списки значений на множества (Set), например, для составов команд и т.п. Это должно повысить безопасность библиотеки, и не должно ухудшить возможности работы.

Пример использования:

-- Наша библиотека
import RatingChgkInfo
-- И немного стандартных библиотек
import Control.Monad (forM, void)
import Control.Monad.IO.Class (liftIO)
import Data.List (nub)
import Data.Time (LocalTime(..),fromGregorian,midnight)
-- Точка входа в приложение
main :: IO ()
main = void $ runRatingApi $ do
  -- Получим список всех очных турниров
  --
  -- Функция tournaments получает одну страницу турниров, а функция getAllItems
  -- оборачивает подобные функции, чтобы пройтись по всем страницам.
  -- Далее из этого списка выбираются очные турниры 2018 года
  let s2018 = LocalTime (fromGregorian 2018 1 1) midnight
      e2018 = LocalTime (fromGregorian 2019 1 1) midnight
  tourns <- filter (\t -> trs_typeName t == Casual &&
                          trs_dateStart t >= s2018 &&
                          trs_dateEnd t <= e2018) <$>
            getAllItems tournaments
  -- Проходимся по полученному списку
  ts <- forM tourns $ \t -> do
    let ident = trs_idtournament t
    -- Получаем результаты турнира
    res <- tournamentResults ident
    -- Возвращаем названия команд-участниц
    pure (map tr_current_name res)
  -- Выводим, сколько уникальных названий было по всем турнирам
  liftIO (print (length (nub ts)))

[Skip to Readme]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

Versions [RSS] 0.3.6.3, 0.3.6.4, 0.3.6.5
Change log CHANGELOG.md
Dependencies aeson (>=1.4), base-noprelude (>=4.11), bytestring (>=0.10), cassava (>=0.5), containers (>=0.5), directory, http-client (>=0.5), http-client-tls (>=0.3), iconv (>=0.4), lens (>=4.17), network (>=2.8), optparse-generic (>=1.3), rating-chgk-info, relude (>=0.4.0), servant (>=0.16), servant-client (>=0.16), servant-js (>=0.9), servant-server (>=0.16), servant-swagger (>=1.1), swagger2 (>=2.2), tagsoup (>=0.14), text (>=1.2), time (>=1.8), vector (>=0.12), wai (>=3.2), warp (>=3.2), wreq (>=0.5) [details]
Tested with ghc ==8.4.3
License BSD-3-Clause
Copyright 2018-2019 Mansur Ziiatdinov
Author Mansur Ziiatdinov
Maintainer gltronred@gmail.com
Category Utility
Uploaded by MZiatdinov at 2019-07-08T15:23:04Z
Distributions
Executables calendar-rating, extra-rating-api, example2, example1
Downloads 1626 total (14 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2019-07-08 [all 1 reports]

Readme for rating-chgk-info-0.3.6.5

[back to package description]

rating-chgk-info

Hackage BSD3 license

Client for rating.chgk.info API and CSV tables

Документация

Клиент для REST API сайта рейтинга (rating.chgk.info) и функциональности, которой нет в REST API, но которая доступна через экспорт CSV. Также содержит REST-сервер для дополнительной функциональности, доступной через CSV.

Сгенерированные JS-функции для работы с REST API: https://bitbucket.org/gltronred/t-chgk-me/downloads/rating-chgk-info-0.2.1.js

В следующем большом релизе планируется заменить в части типов для REST API списки значений на множества (Set), например, для составов команд и т.п. Это должно повысить безопасность библиотеки (сложнее будет выстрелить себе в ногу), и не должно ухудшить возможности работы.

Установка и запуск

Для работы с библиотекой необходимо добавить зависимость rating-chgk-info.

Запустить пример можно при помощи cabal new-run example1.

Пример использования:

Больше примеров находятся в папке examples

-- Немного наших библиотек
import RatingChgkInfo

-- И немного стандартных библиотек
import Control.Monad (forM, void)
import Control.Monad.IO.Class (liftIO)
import Data.List (nub)
import Data.Time (LocalTime(..),fromGregorian,midnight)

-- Точка входа в приложение
main :: IO ()

-- Функция runRatingApi запускает работу клиента, это позволяет разделять эффекты
main = void $ runRatingApi $ do

  -- Получим список всех очных турниров за 2018 год

  let s2018 = LocalTime (fromGregorian 2018 1 1) midnight
      e2018 = LocalTime (fromGregorian 2019 1 1) midnight

  -- Функция tournaments получает одну страницу турниров, а функция getAllItems
  -- оборачивает подобные функции, чтобы пройтись по всем страницам.
  -- Далее из этого списка выбираются очные турниры 2018 года
  tourns <- filter (\t -> trs_typeName t == Casual &&
                          trs_dateStart t >= s2018 &&
                          trs_dateEnd t <= e2018) <$>
            getAllItems tournaments

  -- Проходимся по полученному списку
  ts <- forM tourns $ \TournamentShort{trs_idtournament = ident} -> do

    -- Получаем результаты турнира
    res <- tournamentResults ident

    -- Возвращаем названия команд-участниц
    pure (map tr_current_name res)

  -- Выводим, сколько уникальных названий было по всем турнирам
  liftIO (print (length (nub ts)))