-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Haskell front-end for DGS' bot interface -- -- The Dragon Go Server exposes a convenient interface for bots. This -- module provides some functions for accessing that interface to log in -- to the server, retrieve your status page, retrieve the state of any -- games you are playing, and make moves in games. @package dgs @version 0.1 -- | This is a quick and dirty interface to Dragon Go Server's robot -- interface, as outlined at -- http://www.dragongoserver.net/faq.php?read=t&cat=215#Entry219. -- It does almost no sanity-checking of things you send it, nor does it -- do very much error-checking on the things Dragon sends back. Use with -- caution. -- -- Here are some sample interactions from ghci, with a fictitious -- password: -- --
--   *Network.DGS> browse (silence >> login development "smartypants" "password")
--   LoginSuccess
--   *Network.DGS> browse (silence >> statusUID production 4155) >>= mapM_ print
--   (453881,"jedge42",False,"2009-12-21 03:14 GMT","F: 30d 1h")
--   (532927,"bartnix",False,"2009-12-20 06:06 GMT","F: 21d 13h")
--   *Network.DGS> browse (silence >> statusUser production "dmwit") >>= mapM_ print
--   (453881,"jedge42",False,"2009-12-21 03:14 GMT","F: 30d 1h")
--   (532927,"bartnix",False,"2009-12-20 06:06 GMT","F: 21d 13h")
--   *Network.DGS> :{
--   *Network.DGS| browse $ do {
--   *Network.DGS|   silence;
--   *Network.DGS|   login development "smartypants" "password";
--   *Network.DGS|   (_, [(gid, _, black, _, _)]) <- status development;
--   *Network.DGS|   move development gid black (16, 18) (17, 16)
--   *Network.DGS|   }
--   *Network.DGS| :}
--   MoveSuccess
--   
module Network.DGS data LoginResult WrongUsername :: LoginResult WrongPassword :: LoginResult -- | it's a bug in the library if one of these ever gets built LoginProblem :: String -> LoginResult LoginSuccess :: LoginResult -- | some commands either require you to be logged in, or will give -- additional information if you log in login :: String -> String -> String -> DGS LoginResult -- | (game ID, username of the opponent, current player is black?, date, -- time remaining) type Game = (Integer, String, Bool, String, String) -- | (message ID, username of the sender, subject, date) type Message = (Integer, String, String, String) -- | get the inbox and games list of whoever is currently logged in; this -- will return ([], []) if you are not logged in status :: String -> DGS ([Message], [Game]) -- | get the games list of an arbitrary user; this will give the same -- results whether or not you are logged in statusUID :: String -> Integer -> DGS [Game] -- | get the games list of an arbitrary user this will give the same -- results whether or not you are logged in statusUser :: String -> String -> DGS [Game] -- | 0-indexed x/y coordinates that start at the top left type Point = (Integer, Integer) data MoveResult NotLoggedIn :: MoveResult NoGameNumber :: MoveResult -- | or a bad game ID DatabaseCorrupted :: MoveResult -- | or you're not playing in the game, or you claimed to be the wrong -- color NotYourTurn :: MoveResult -- | or the previous move didn't match reality MoveAlreadyPlayed :: MoveResult -- | ko, playing on top of another stone, playing off the board IllegalPosition :: MoveResult -- | it's a bug in the library if one of these ever gets built MoveProblem :: String -> MoveResult MoveSuccess :: MoveResult move :: String -> Integer -> Bool -> Point -> Point -> DGS MoveResult -- | you can only get private comments if you are logged in; if you are not -- logged in, this will succeed, but a request for private comments will -- be ignored, and you'll get an SGF with only the public comments sgf :: String -> Integer -> Bool -> DGS String -- | a convenient type synonym for HTTP's browser monad type DGS a = BrowserAction (HandleStream String) a -- | the address of the development server, -- "dragongoserver.sourceforge.net" development :: String -- | the address of the most well-known public server, -- "www.dragongoserver.net" production :: String -- | by default, HTTP's browser chatters a lot on stdout; this action turns -- off the chatter silence :: DGS () instance Eq MoveResult instance Ord MoveResult instance Show MoveResult instance Read MoveResult instance Eq LoginResult instance Ord LoginResult instance Show LoginResult instance Read LoginResult