Creating cookies with Network.Browser

So, I'm trying to use the Network.Browser library to store cookie sessions. Here is what I still have:

main = do args <- getArgs [user, pass] <- if not (null args) then return args else do user <- fetch "username" pass <- fetch "password" return [user, pass] sup <- browse $ do -- setOutHandler $ const $ return () (request (getRequest ("http://www.plurk.com/API/Users/login?" ++ "username=" ++ user ++ "&password=" ++ pass ++ "&api_key=FVXhr06sHbbp7Lv2rezPVw8rhpl7fNnX"))) let (_,a) = rspHeaders <$> sup -- let (Right b) = parseJSON a -- let (Just c) = findIn b ["fans_count"] putStrLn $ hdrValue (a!!5) fetch info = do putStr $ "Enter your plurk " ++ info ++ ": " hFlush stdout return =<< getLine 

this gives the following result:

 Sending: GET /API/Users/login?username=saiko_chriskun&password=XXXXXXXXXX&api_key=FVXhr06sHbbp7Lv2rezPVw8rhpl7fNnX HTTP/1.1 Host: www.plurk.com Content-Length: 0 User-Agent: hs-HTTP-4000.0.9 Creating new connection to www.plurk.com Received: HTTP/1.1 200 OK Server: nginx/1.0.0 Date: Sat, 21 May 2011 06:37:41 GMT Content-Type: text/html; charset=utf-8 Transfer-Encoding: chunked Connection: close Set-Cookie: plurkcookiea="bYQstPmQg58L5hTs9nZ7fvIEzuc=?age=STIwCi4=&api_login=STAxCi4=&chkN=Uyc4YzU1ZWM3YTMzNzQxM2I2MDM2MmY1ZWZhODM5NzdhOScKcDEKLg==&gender=TDFMCi4=&user_id=TDgwNTc3NDlMCi4=&user_ip=Uyc3NS4zNi4yMTMuMjgnCnAxCi4="; Domain=.plurk.com; expires=Sat, 04-Jun-2011 06:37:41 GMT; Max-Age=1209600; Path=/ Expires: Sat, 21 May 2011 06:37:40 GMT Cache-Control: no-cache Cache-Control: no-cache Pragma: no-cache Content-Length: 2648 Cookies received: MkCookie {ckDomain = ".plurk.com", ckName = "plurkcookiea", ckValue = "bYQstPmQg58L5hTs9nZ7fvIEzuc=?age=STIwCi4=&api_login=STAxCi4=&chkN=Uyc4YzU1ZWM3YTMzNzQxM2I2MDM2MmY1ZWZhODM5NzdhOScKcDEKLg==&gender=TDFMCi4=&user_id=TDgwNTc3NDlMCi4=&user_ip=Uyc3NS4zNi4yMTMuMjgnCnAxCi4=", ckPath = Just "/", ckComment = Nothing, ckVersion = Nothing} Accepting cookies with names: plurkcookiea plurkcookiea="bYQstPmQg58L5hTs9nZ7fvIEzuc=?age=STIwCi4=&api_login=STAxCi4=&chkN=Uyc4YzU1ZWM3YTMzNzQxM2I2MDM2MmY1ZWZhODM5NzdhOScKcDEKLg==&gender=TDFMCi4=&user_id=TDgwNTc3NDlMCi4=&user_ip=Uyc3NS4zNi4yMTMuMjgnCnAxCi4="; Domain=.plurk.com; expires=Sat, 04-Jun-2011 06:37:41 GMT; Max-Age=1209600; Path=/ = age = STIwCi4 = & api_login = STAxCi4 = & chkN = Uyc4YzU1ZWM3YTMzNzQxM2I2MDM2MmY1ZWZhODM5NzdhOScKcDEKLg == & gender = TDFMCi4 = & user_id = TDgwNTc3NDlMCi4 = & user_ip = Uyc3NS4zNi4yMTMuMjgnCnAxCi4 =?"; Sending: GET /API/Users/login?username=saiko_chriskun&password=XXXXXXXXXX&api_key=FVXhr06sHbbp7Lv2rezPVw8rhpl7fNnX HTTP/1.1 Host: www.plurk.com Content-Length: 0 User-Agent: hs-HTTP-4000.0.9 Creating new connection to www.plurk.com Received: HTTP/1.1 200 OK Server: nginx/1.0.0 Date: Sat, 21 May 2011 06:37:41 GMT Content-Type: text/html; charset=utf-8 Transfer-Encoding: chunked Connection: close Set-Cookie: plurkcookiea="bYQstPmQg58L5hTs9nZ7fvIEzuc=?age=STIwCi4=&api_login=STAxCi4=&chkN=Uyc4YzU1ZWM3YTMzNzQxM2I2MDM2MmY1ZWZhODM5NzdhOScKcDEKLg==&gender=TDFMCi4=&user_id=TDgwNTc3NDlMCi4=&user_ip=Uyc3NS4zNi4yMTMuMjgnCnAxCi4="; Domain=.plurk.com; expires=Sat, 04-Jun-2011 06:37:41 GMT; Max-Age=1209600; Path=/ Expires: Sat, 21 May 2011 06:37:40 GMT Cache-Control: no-cache Cache-Control: no-cache Pragma: no-cache Content-Length: 2648 Cookies received: MkCookie {ckDomain = ".plurk.com", ckName = "plurkcookiea", ckValue = "bYQstPmQg58L5hTs9nZ7fvIEzuc=?age=STIwCi4=&api_login=STAxCi4=&chkN=Uyc4YzU1ZWM3YTMzNzQxM2I2MDM2MmY1ZWZhODM5NzdhOScKcDEKLg==&gender=TDFMCi4=&user_id=TDgwNTc3NDlMCi4=&user_ip=Uyc3NS4zNi4yMTMuMjgnCnAxCi4=", ckPath = Just "/", ckComment = Nothing, ckVersion = Nothing} Accepting cookies with names: plurkcookiea plurkcookiea="bYQstPmQg58L5hTs9nZ7fvIEzuc=?age=STIwCi4=&api_login=STAxCi4=&chkN=Uyc4YzU1ZWM3YTMzNzQxM2I2MDM2MmY1ZWZhODM5NzdhOScKcDEKLg==&gender=TDFMCi4=&user_id=TDgwNTc3NDlMCi4=&user_ip=Uyc3NS4zNi4yMTMuMjgnCnAxCi4="; Domain=.plurk.com; expires=Sat, 04-Jun-2011 06:37:41 GMT; Max-Age=1209600; Path=/ ckName = "plurkcookiea", ckValue = "bYQstPmQg58L5hTs9nZ7fvIEzuc =? Age = STIwCi4 = & api_login = STAxCi4 = & chkN = Uyc4YzU1ZWM3YTMzNzQxM2I2MDM2MmY1ZWZhODM5NzdhOScKcDEKLg == & gender = TDFMCi4 = & user_id = TDgwNTc3NDlMCi4 = & user_ip = Uyc3NS4zNi4yMTMuMjgnCnAxCi4 =", Sending: GET /API/Users/login?username=saiko_chriskun&password=XXXXXXXXXX&api_key=FVXhr06sHbbp7Lv2rezPVw8rhpl7fNnX HTTP/1.1 Host: www.plurk.com Content-Length: 0 User-Agent: hs-HTTP-4000.0.9 Creating new connection to www.plurk.com Received: HTTP/1.1 200 OK Server: nginx/1.0.0 Date: Sat, 21 May 2011 06:37:41 GMT Content-Type: text/html; charset=utf-8 Transfer-Encoding: chunked Connection: close Set-Cookie: plurkcookiea="bYQstPmQg58L5hTs9nZ7fvIEzuc=?age=STIwCi4=&api_login=STAxCi4=&chkN=Uyc4YzU1ZWM3YTMzNzQxM2I2MDM2MmY1ZWZhODM5NzdhOScKcDEKLg==&gender=TDFMCi4=&user_id=TDgwNTc3NDlMCi4=&user_ip=Uyc3NS4zNi4yMTMuMjgnCnAxCi4="; Domain=.plurk.com; expires=Sat, 04-Jun-2011 06:37:41 GMT; Max-Age=1209600; Path=/ Expires: Sat, 21 May 2011 06:37:40 GMT Cache-Control: no-cache Cache-Control: no-cache Pragma: no-cache Content-Length: 2648 Cookies received: MkCookie {ckDomain = ".plurk.com", ckName = "plurkcookiea", ckValue = "bYQstPmQg58L5hTs9nZ7fvIEzuc=?age=STIwCi4=&api_login=STAxCi4=&chkN=Uyc4YzU1ZWM3YTMzNzQxM2I2MDM2MmY1ZWZhODM5NzdhOScKcDEKLg==&gender=TDFMCi4=&user_id=TDgwNTc3NDlMCi4=&user_ip=Uyc3NS4zNi4yMTMuMjgnCnAxCi4=", ckPath = Just "/", ckComment = Nothing, ckVersion = Nothing} Accepting cookies with names: plurkcookiea plurkcookiea="bYQstPmQg58L5hTs9nZ7fvIEzuc=?age=STIwCi4=&api_login=STAxCi4=&chkN=Uyc4YzU1ZWM3YTMzNzQxM2I2MDM2MmY1ZWZhODM5NzdhOScKcDEKLg==&gender=TDFMCi4=&user_id=TDgwNTc3NDlMCi4=&user_ip=Uyc3NS4zNi4yMTMuMjgnCnAxCi4="; Domain=.plurk.com; expires=Sat, 04-Jun-2011 06:37:41 GMT; Max-Age=1209600; Path=/ 

The last line is the result of PutStrLn, and I could run it through parsec if I really need to ... but above that, from the output of the review, there is an MkCookie constructor with all the information I need. Is there any easy way to get this?

+4
source share
1 answer

getCookies inside the nun BrowserAction returns a list of accepted cookies. Use it like this:

 import Network.HTTP import Network.Browser main = do (rsp, cookies) <- browse $ do rsp <- request $ getRequest "http://google.com/" cookies <- getCookies return (rsp, cookies) print cookies 
+1
source

All Articles