advent-of-code-api-0.2.4.2: Advent of Code REST API bindings and servant API

Copyright(c) Justin Le 2019
LicenseBSD3
Maintainerjustin@jle.im
Stabilityexperimental
Portabilitynon-portable
Safe HaskellNone
LanguageHaskell2010

Advent.Types

Contents

Description

Data types used for the underlying API.

Since: 0.2.3.0

Synopsis

Types

newtype Day Source #

Describes the day: a number between 1 and 25 inclusive.

Represented by a Finite ranging from 0 to 24 inclusive; you should probably make one using the smart constructor mkDay.

Constructors

Day 

Fields

Instances
Bounded Day Source # 
Instance details

Defined in Advent.Types

Methods

minBound :: Day #

maxBound :: Day #

Enum Day Source # 
Instance details

Defined in Advent.Types

Methods

succ :: Day -> Day #

pred :: Day -> Day #

toEnum :: Int -> Day #

fromEnum :: Day -> Int #

enumFrom :: Day -> [Day] #

enumFromThen :: Day -> Day -> [Day] #

enumFromTo :: Day -> Day -> [Day] #

enumFromThenTo :: Day -> Day -> Day -> [Day] #

Eq Day Source # 
Instance details

Defined in Advent.Types

Methods

(==) :: Day -> Day -> Bool #

(/=) :: Day -> Day -> Bool #

Ord Day Source # 
Instance details

Defined in Advent.Types

Methods

compare :: Day -> Day -> Ordering #

(<) :: Day -> Day -> Bool #

(<=) :: Day -> Day -> Bool #

(>) :: Day -> Day -> Bool #

(>=) :: Day -> Day -> Bool #

max :: Day -> Day -> Day #

min :: Day -> Day -> Day #

Show Day Source # 
Instance details

Defined in Advent.Types

Methods

showsPrec :: Int -> Day -> ShowS #

show :: Day -> String #

showList :: [Day] -> ShowS #

Generic Day Source # 
Instance details

Defined in Advent.Types

Associated Types

type Rep Day :: Type -> Type #

Methods

from :: Day -> Rep Day x #

to :: Rep Day x -> Day #

ToJSON Day Source #

Since: 0.2.4.2

Instance details

Defined in Advent.Types

ToJSONKey Day Source #

Since: 0.2.4.2

Instance details

Defined in Advent.Types

FromJSON Day Source # 
Instance details

Defined in Advent.Types

FromJSONKey Day Source # 
Instance details

Defined in Advent.Types

ToHttpApiData Day Source # 
Instance details

Defined in Advent.Types

type Rep Day Source # 
Instance details

Defined in Advent.Types

type Rep Day = D1 (MetaData "Day" "Advent.Types" "advent-of-code-api-0.2.4.2-inplace" True) (C1 (MetaCons "Day" PrefixI True) (S1 (MetaSel (Just "dayFinite") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Finite 25))))

data Part Source #

A given part of a problem. All Advent of Code challenges are two-parts.

You can usually get Part1 (if it is already released) with a nonsense session key, but Part2 always requires a valid session key.

Constructors

Part1 
Part2 
Instances
Bounded Part Source # 
Instance details

Defined in Advent.Types

Enum Part Source # 
Instance details

Defined in Advent.Types

Methods

succ :: Part -> Part #

pred :: Part -> Part #

toEnum :: Int -> Part #

fromEnum :: Part -> Int #

enumFrom :: Part -> [Part] #

enumFromThen :: Part -> Part -> [Part] #

enumFromTo :: Part -> Part -> [Part] #

enumFromThenTo :: Part -> Part -> Part -> [Part] #

Eq Part Source # 
Instance details

Defined in Advent.Types

Methods

(==) :: Part -> Part -> Bool #

(/=) :: Part -> Part -> Bool #

Ord Part Source # 
Instance details

Defined in Advent.Types

Methods

compare :: Part -> Part -> Ordering #

(<) :: Part -> Part -> Bool #

(<=) :: Part -> Part -> Bool #

(>) :: Part -> Part -> Bool #

(>=) :: Part -> Part -> Bool #

max :: Part -> Part -> Part #

min :: Part -> Part -> Part #

Read Part Source # 
Instance details

Defined in Advent.Types

Show Part Source # 
Instance details

Defined in Advent.Types

Methods

showsPrec :: Int -> Part -> ShowS #

show :: Part -> String #

showList :: [Part] -> ShowS #

Generic Part Source # 
Instance details

Defined in Advent.Types

Associated Types

type Rep Part :: Type -> Type #

Methods

from :: Part -> Rep Part x #

to :: Rep Part x -> Part #

ToJSON Part Source #

Since: 0.2.4.2

Instance details

Defined in Advent.Types

ToJSONKey Part Source #

Since: 0.2.4.2

Instance details

Defined in Advent.Types

FromJSON Part Source # 
Instance details

Defined in Advent.Types

FromJSONKey Part Source # 
Instance details

Defined in Advent.Types

ToHttpApiData Part Source # 
Instance details

Defined in Advent.Types

type Rep Part Source # 
Instance details

Defined in Advent.Types

type Rep Part = D1 (MetaData "Part" "Advent.Types" "advent-of-code-api-0.2.4.2-inplace" False) (C1 (MetaCons "Part1" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "Part2" PrefixI False) (U1 :: Type -> Type))

data SubmitInfo Source #

Info required to submit an answer for a part.

Constructors

SubmitInfo 

Fields

Instances
Eq SubmitInfo Source # 
Instance details

Defined in Advent.Types

Ord SubmitInfo Source # 
Instance details

Defined in Advent.Types

Read SubmitInfo Source # 
Instance details

Defined in Advent.Types

Show SubmitInfo Source # 
Instance details

Defined in Advent.Types

Generic SubmitInfo Source # 
Instance details

Defined in Advent.Types

Associated Types

type Rep SubmitInfo :: Type -> Type #

ToForm SubmitInfo Source # 
Instance details

Defined in Advent.Types

Methods

toForm :: SubmitInfo -> Form #

type Rep SubmitInfo Source # 
Instance details

Defined in Advent.Types

type Rep SubmitInfo = D1 (MetaData "SubmitInfo" "Advent.Types" "advent-of-code-api-0.2.4.2-inplace" False) (C1 (MetaCons "SubmitInfo" PrefixI True) (S1 (MetaSel (Just "siLevel") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Part) :*: S1 (MetaSel (Just "siAnswer") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String)))

data SubmitRes Source #

The result of a submission.

Constructors

SubCorrect (Maybe Integer)

Correct submission, including global rank (if reported, which usually happens if rank is under 1000)

SubIncorrect Int (Maybe String)

Incorrect submission. Contains the number of seconds you must wait before trying again. The Maybe contains possible hints given by the server (usually "too low" or "too high").

SubWait Int

Submission was rejected because an incorrect submission was recently submitted. Contains the number of seconds you must wait before trying again.

SubInvalid

Submission was rejected because it was sent to an invalid question or part. Usually happens if you submit to a part you have already answered or have not yet unlocked.

SubUnknown String

Could not parse server response. Contains parse error.

Instances
Eq SubmitRes Source # 
Instance details

Defined in Advent.Types

Ord SubmitRes Source # 
Instance details

Defined in Advent.Types

Read SubmitRes Source # 
Instance details

Defined in Advent.Types

Show SubmitRes Source # 
Instance details

Defined in Advent.Types

Generic SubmitRes Source # 
Instance details

Defined in Advent.Types

Associated Types

type Rep SubmitRes :: Type -> Type #

FromTags "article" SubmitRes Source # 
Instance details

Defined in Advent.API

Methods

fromTags :: p "article" -> [Text] -> Maybe SubmitRes Source #

type Rep SubmitRes Source # 
Instance details

Defined in Advent.Types

newtype PublicCode Source #

Member ID of public leaderboard (the first part of the registration code, before the hyphen). It can be found as the number in the URL:

https://adventofcode.com/2019/leaderboard/private/view/12345

(the 12345 above)

Constructors

PublicCode 
Instances
Eq PublicCode Source # 
Instance details

Defined in Advent.Types

Ord PublicCode Source # 
Instance details

Defined in Advent.Types

Read PublicCode Source # 
Instance details

Defined in Advent.Types

Show PublicCode Source # 
Instance details

Defined in Advent.Types

Generic PublicCode Source # 
Instance details

Defined in Advent.Types

Associated Types

type Rep PublicCode :: Type -> Type #

ToHttpApiData PublicCode Source # 
Instance details

Defined in Advent.Types

type Rep PublicCode Source # 
Instance details

Defined in Advent.Types

type Rep PublicCode = D1 (MetaData "PublicCode" "Advent.Types" "advent-of-code-api-0.2.4.2-inplace" True) (C1 (MetaCons "PublicCode" PrefixI True) (S1 (MetaSel (Just "getPublicCode") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Integer)))

data Leaderboard Source #

Leaderboard type, representing private leaderboard information.

Constructors

LB 

Fields

Instances
Eq Leaderboard Source # 
Instance details

Defined in Advent.Types

Ord Leaderboard Source # 
Instance details

Defined in Advent.Types

Show Leaderboard Source # 
Instance details

Defined in Advent.Types

Generic Leaderboard Source # 
Instance details

Defined in Advent.Types

Associated Types

type Rep Leaderboard :: Type -> Type #

FromJSON Leaderboard Source # 
Instance details

Defined in Advent.Types

type Rep Leaderboard Source # 
Instance details

Defined in Advent.Types

data LeaderboardMember Source #

Leaderboard position for a given member.

Constructors

LBM 

Fields

Instances
Eq LeaderboardMember Source # 
Instance details

Defined in Advent.Types

Ord LeaderboardMember Source # 
Instance details

Defined in Advent.Types

Show LeaderboardMember Source # 
Instance details

Defined in Advent.Types

Generic LeaderboardMember Source # 
Instance details

Defined in Advent.Types

Associated Types

type Rep LeaderboardMember :: Type -> Type #

FromJSON LeaderboardMember Source # 
Instance details

Defined in Advent.Types

type Rep LeaderboardMember Source # 
Instance details

Defined in Advent.Types

newtype Rank Source #

Ranking between 1 to 100, for daily and global leaderboards

Note that getRank interanlly stores a number from 0 to 99, so be sure to add or subtract accordingly if you want to display or parse it.

Since: 0.2.3.0

Constructors

Rank 

Fields

Instances
Eq Rank Source # 
Instance details

Defined in Advent.Types

Methods

(==) :: Rank -> Rank -> Bool #

(/=) :: Rank -> Rank -> Bool #

Ord Rank Source # 
Instance details

Defined in Advent.Types

Methods

compare :: Rank -> Rank -> Ordering #

(<) :: Rank -> Rank -> Bool #

(<=) :: Rank -> Rank -> Bool #

(>) :: Rank -> Rank -> Bool #

(>=) :: Rank -> Rank -> Bool #

max :: Rank -> Rank -> Rank #

min :: Rank -> Rank -> Rank #

Show Rank Source # 
Instance details

Defined in Advent.Types

Methods

showsPrec :: Int -> Rank -> ShowS #

show :: Rank -> String #

showList :: [Rank] -> ShowS #

Generic Rank Source # 
Instance details

Defined in Advent.Types

Associated Types

type Rep Rank :: Type -> Type #

Methods

from :: Rank -> Rep Rank x #

to :: Rep Rank x -> Rank #

ToJSON Rank Source # 
Instance details

Defined in Advent.Types

ToJSONKey Rank Source # 
Instance details

Defined in Advent.Types

FromJSON Rank Source # 
Instance details

Defined in Advent.Types

FromJSONKey Rank Source # 
Instance details

Defined in Advent.Types

type Rep Rank Source # 
Instance details

Defined in Advent.Types

type Rep Rank = D1 (MetaData "Rank" "Advent.Types" "advent-of-code-api-0.2.4.2-inplace" True) (C1 (MetaCons "Rank" PrefixI True) (S1 (MetaSel (Just "getRank") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Finite 100))))

data DailyLeaderboard Source #

Daily leaderboard, containing Star 1 and Star 2 completions

Since: 0.2.3.0

Instances
Eq DailyLeaderboard Source # 
Instance details

Defined in Advent.Types

Ord DailyLeaderboard Source # 
Instance details

Defined in Advent.Types

Show DailyLeaderboard Source # 
Instance details

Defined in Advent.Types

Generic DailyLeaderboard Source # 
Instance details

Defined in Advent.Types

Associated Types

type Rep DailyLeaderboard :: Type -> Type #

ToJSON DailyLeaderboard Source # 
Instance details

Defined in Advent.Types

FromJSON DailyLeaderboard Source # 
Instance details

Defined in Advent.Types

FromTags "div" DailyLeaderboard Source # 
Instance details

Defined in Advent.API

Methods

fromTags :: p "div" -> [Text] -> Maybe DailyLeaderboard Source #

type Rep DailyLeaderboard Source # 
Instance details

Defined in Advent.Types

data DailyLeaderboardMember Source #

Single daily leaderboard position

Since: 0.2.3.0

Instances
Eq DailyLeaderboardMember Source # 
Instance details

Defined in Advent.Types

Ord DailyLeaderboardMember Source # 
Instance details

Defined in Advent.Types

Show DailyLeaderboardMember Source # 
Instance details

Defined in Advent.Types

Generic DailyLeaderboardMember Source # 
Instance details

Defined in Advent.Types

Associated Types

type Rep DailyLeaderboardMember :: Type -> Type #

ToJSON DailyLeaderboardMember Source # 
Instance details

Defined in Advent.Types

FromJSON DailyLeaderboardMember Source # 
Instance details

Defined in Advent.Types

type Rep DailyLeaderboardMember Source # 
Instance details

Defined in Advent.Types

newtype GlobalLeaderboard Source #

Global leaderboard for the entire event

Under each Rank is an Integer for the score at that rank, as well as a non-empty list of all members who achieved that rank and score.

Since: 0.2.3.0

Instances
Eq GlobalLeaderboard Source # 
Instance details

Defined in Advent.Types

Ord GlobalLeaderboard Source # 
Instance details

Defined in Advent.Types

Show GlobalLeaderboard Source # 
Instance details

Defined in Advent.Types

Generic GlobalLeaderboard Source # 
Instance details

Defined in Advent.Types

Associated Types

type Rep GlobalLeaderboard :: Type -> Type #

ToJSON GlobalLeaderboard Source # 
Instance details

Defined in Advent.Types

FromJSON GlobalLeaderboard Source # 
Instance details

Defined in Advent.Types

FromTags "div" GlobalLeaderboard Source # 
Instance details

Defined in Advent.API

Methods

fromTags :: p "div" -> [Text] -> Maybe GlobalLeaderboard Source #

type Rep GlobalLeaderboard Source # 
Instance details

Defined in Advent.Types

type Rep GlobalLeaderboard = D1 (MetaData "GlobalLeaderboard" "Advent.Types" "advent-of-code-api-0.2.4.2-inplace" True) (C1 (MetaCons "GLB" PrefixI True) (S1 (MetaSel (Just "glbMap") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Map Rank (Integer, NonEmpty GlobalLeaderboardMember)))))

data GlobalLeaderboardMember Source #

Single global leaderboard position

Since: 0.2.3.0

Instances
Eq GlobalLeaderboardMember Source # 
Instance details

Defined in Advent.Types

Ord GlobalLeaderboardMember Source # 
Instance details

Defined in Advent.Types

Show GlobalLeaderboardMember Source # 
Instance details

Defined in Advent.Types

Generic GlobalLeaderboardMember Source # 
Instance details

Defined in Advent.Types

Associated Types

type Rep GlobalLeaderboardMember :: Type -> Type #

ToJSON GlobalLeaderboardMember Source # 
Instance details

Defined in Advent.Types

FromJSON GlobalLeaderboardMember Source # 
Instance details

Defined in Advent.Types

type Rep GlobalLeaderboardMember Source # 
Instance details

Defined in Advent.Types

Util

mkDay :: Integer -> Maybe Day Source #

Construct a Day from a day integer (1 - 25). If input is out of range, Nothing is returned. See mkDay_ for an unsafe version useful for literals.

Inverse of dayInt.

mkDay_ :: Integer -> Day Source #

Construct a Finite 25 (the type of a Day) from a day integer (1 - 25). Is undefined if input is out of range. Can be useful for compile-time literals, like mkDay_ 4

Inverse of dayInt.

dayInt :: Day -> Integer Source #

Convert a Finite 25 day into a day integer (1 - 25). Inverse of mkDay.

_DayInt :: (Choice p, Applicative f) => p Day (f Day) -> p Integer (f Integer) Source #

This is a Prism' Integer Day , to treat an Integer as if it were a Day.

Since: 0.2.4.0

pattern DayInt :: Day -> Integer Source #

Pattern synonym allowing you to match on an Integer as if it were a Day:

case myInt of
  DayInt d -> ...
  _        -> ...

Will fail if the integer is out of bounds (outside of 1-25)

Since: 0.2.4.0

partInt :: Part -> Int Source #

Convert a Part to an Int.

partChar :: Part -> Char Source #

A character associated with a given part. Part1 is associated with 'a', and Part2 is associated with 'b'

fullDailyBoard :: DailyLeaderboard -> Bool Source #

Check if a DailyLeaderboard is filled up or not.

Since: 0.2.4.0

Internal