packages feed

openid-0.1: examples/test.hs

import MonadLib
import Network.OpenID
import Network.SSL

import Network.Socket
import System.Environment

main = withSocketsDo $ do
  sslInit
  [ident,check] <- getArgs
  case normalizeIdentifier (Identifier ident) of
    Nothing -> putStrLn "Unable to normalize identifier"
    Just i  -> do
      let resolve = makeRequest True
      rpi <- discover resolve i
      case rpi of
        Left err    -> putStrLn $ "discover: " ++ show err
        Right (p,i) -> do
          putStrLn ("found provider: " ++ show p)
          putStrLn ("found identity: " ++ show i)
          eam <- associate emptyAssociationMap True resolve p
          case eam of
            Left err -> putStrLn $ "associate: " ++ show err
            Right am -> do
              let au = authenticationURI am Setup p i check Nothing
              print au
              line <- getLine
              let params = parseParams line
              print =<< verifyAuthentication am params check resolve