{- | Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte License : LGPL-2.1 Maintainer : Iñaki García Etxebarria (garetxe@gmail.com) An HTTP cookie. @name and @value will be set for all cookies. If the cookie is generated from a string that appears to have no name, then @name will be the empty string. @domain and @path give the host or domain, and path within that host/domain, to restrict this cookie to. If @domain starts with ".", that indicates a domain (which matches the string after the ".", or any hostname that has @domain as a suffix). Otherwise, it is a hostname and must match exactly. @expires will be non-%NULL if the cookie uses either the original "expires" attribute, or the newer "max-age" attribute. If @expires is %NULL, it indicates that neither "expires" nor "max-age" was specified, and the cookie expires at the end of the session. If @http_only is set, the cookie should not be exposed to untrusted code (eg, javascript), so as to minimize the danger posed by cross-site scripting attacks. -} module GI.Soup.Structs.Cookie ( -- * Exported types Cookie(..) , newZeroCookie , noCookie , -- * Methods -- ** cookieAppliesToUri CookieAppliesToUriMethodInfo , cookieAppliesToUri , -- ** cookieCopy CookieCopyMethodInfo , cookieCopy , -- ** cookieDomainMatches CookieDomainMatchesMethodInfo , cookieDomainMatches , -- ** cookieEqual CookieEqualMethodInfo , cookieEqual , -- ** cookieFree CookieFreeMethodInfo , cookieFree , -- ** cookieGetDomain CookieGetDomainMethodInfo , cookieGetDomain , -- ** cookieGetExpires CookieGetExpiresMethodInfo , cookieGetExpires , -- ** cookieGetHttpOnly CookieGetHttpOnlyMethodInfo , cookieGetHttpOnly , -- ** cookieGetName CookieGetNameMethodInfo , cookieGetName , -- ** cookieGetPath CookieGetPathMethodInfo , cookieGetPath , -- ** cookieGetSecure CookieGetSecureMethodInfo , cookieGetSecure , -- ** cookieGetValue CookieGetValueMethodInfo , cookieGetValue , -- ** cookieNew cookieNew , -- ** cookieParse cookieParse , -- ** cookieSetDomain CookieSetDomainMethodInfo , cookieSetDomain , -- ** cookieSetExpires CookieSetExpiresMethodInfo , cookieSetExpires , -- ** cookieSetHttpOnly CookieSetHttpOnlyMethodInfo , cookieSetHttpOnly , -- ** cookieSetMaxAge CookieSetMaxAgeMethodInfo , cookieSetMaxAge , -- ** cookieSetName CookieSetNameMethodInfo , cookieSetName , -- ** cookieSetPath CookieSetPathMethodInfo , cookieSetPath , -- ** cookieSetSecure CookieSetSecureMethodInfo , cookieSetSecure , -- ** cookieSetValue CookieSetValueMethodInfo , cookieSetValue , -- ** cookieToCookieHeader CookieToCookieHeaderMethodInfo , cookieToCookieHeader , -- ** cookieToSetCookieHeader CookieToSetCookieHeaderMethodInfo , cookieToSetCookieHeader , -- * Properties -- ** Domain cookieClearDomain , cookieDomain , cookieReadDomain , cookieWriteDomain , -- ** Expires cookieClearExpires , cookieExpires , cookieReadExpires , cookieWriteExpires , -- ** HttpOnly cookieHttpOnly , cookieReadHttpOnly , cookieWriteHttpOnly , -- ** Name cookieClearName , cookieName , cookieReadName , cookieWriteName , -- ** Path cookieClearPath , cookiePath , cookieReadPath , cookieWritePath , -- ** Secure cookieReadSecure , cookieSecure , cookieWriteSecure , -- ** Value cookieClearValue , cookieReadValue , cookieValue , cookieWriteValue , ) where import Data.GI.Base.ShortPrelude import qualified Data.GI.Base.Attributes as GI.Attributes import qualified Data.Text as T import qualified Data.ByteString.Char8 as B import qualified Data.Map as Map import GI.Soup.Types import GI.Soup.Callbacks newtype Cookie = Cookie (ForeignPtr Cookie) foreign import ccall "soup_cookie_get_type" c_soup_cookie_get_type :: IO GType instance BoxedObject Cookie where boxedType _ = c_soup_cookie_get_type -- | Construct a `Cookie` struct initialized to zero. newZeroCookie :: MonadIO m => m Cookie newZeroCookie = liftIO $ callocBoxedBytes 48 >>= wrapBoxed Cookie instance tag ~ 'AttrSet => Constructible Cookie tag where new _ attrs = do o <- newZeroCookie GI.Attributes.set o attrs return o noCookie :: Maybe Cookie noCookie = Nothing cookieReadName :: MonadIO m => Cookie -> m (Maybe T.Text) cookieReadName s = liftIO $ withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 0) :: IO CString result <- convertIfNonNull val $ \val' -> do val'' <- cstringToText val' return val'' return result cookieWriteName :: MonadIO m => Cookie -> CString -> m () cookieWriteName s val = liftIO $ withManagedPtr s $ \ptr -> do poke (ptr `plusPtr` 0) (val :: CString) cookieClearName :: MonadIO m => Cookie -> m () cookieClearName s = liftIO $ withManagedPtr s $ \ptr -> do poke (ptr `plusPtr` 0) (nullPtr :: CString) data CookieNameFieldInfo instance AttrInfo CookieNameFieldInfo where type AttrAllowedOps CookieNameFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear] type AttrSetTypeConstraint CookieNameFieldInfo = (~) CString type AttrBaseTypeConstraint CookieNameFieldInfo = (~) Cookie type AttrGetType CookieNameFieldInfo = Maybe T.Text type AttrLabel CookieNameFieldInfo = "name" attrGet _ = cookieReadName attrSet _ = cookieWriteName attrConstruct = undefined attrClear _ = cookieClearName cookieName :: AttrLabelProxy "name" cookieName = AttrLabelProxy cookieReadValue :: MonadIO m => Cookie -> m (Maybe T.Text) cookieReadValue s = liftIO $ withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 8) :: IO CString result <- convertIfNonNull val $ \val' -> do val'' <- cstringToText val' return val'' return result cookieWriteValue :: MonadIO m => Cookie -> CString -> m () cookieWriteValue s val = liftIO $ withManagedPtr s $ \ptr -> do poke (ptr `plusPtr` 8) (val :: CString) cookieClearValue :: MonadIO m => Cookie -> m () cookieClearValue s = liftIO $ withManagedPtr s $ \ptr -> do poke (ptr `plusPtr` 8) (nullPtr :: CString) data CookieValueFieldInfo instance AttrInfo CookieValueFieldInfo where type AttrAllowedOps CookieValueFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear] type AttrSetTypeConstraint CookieValueFieldInfo = (~) CString type AttrBaseTypeConstraint CookieValueFieldInfo = (~) Cookie type AttrGetType CookieValueFieldInfo = Maybe T.Text type AttrLabel CookieValueFieldInfo = "value" attrGet _ = cookieReadValue attrSet _ = cookieWriteValue attrConstruct = undefined attrClear _ = cookieClearValue cookieValue :: AttrLabelProxy "value" cookieValue = AttrLabelProxy cookieReadDomain :: MonadIO m => Cookie -> m (Maybe T.Text) cookieReadDomain s = liftIO $ withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 16) :: IO CString result <- convertIfNonNull val $ \val' -> do val'' <- cstringToText val' return val'' return result cookieWriteDomain :: MonadIO m => Cookie -> CString -> m () cookieWriteDomain s val = liftIO $ withManagedPtr s $ \ptr -> do poke (ptr `plusPtr` 16) (val :: CString) cookieClearDomain :: MonadIO m => Cookie -> m () cookieClearDomain s = liftIO $ withManagedPtr s $ \ptr -> do poke (ptr `plusPtr` 16) (nullPtr :: CString) data CookieDomainFieldInfo instance AttrInfo CookieDomainFieldInfo where type AttrAllowedOps CookieDomainFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear] type AttrSetTypeConstraint CookieDomainFieldInfo = (~) CString type AttrBaseTypeConstraint CookieDomainFieldInfo = (~) Cookie type AttrGetType CookieDomainFieldInfo = Maybe T.Text type AttrLabel CookieDomainFieldInfo = "domain" attrGet _ = cookieReadDomain attrSet _ = cookieWriteDomain attrConstruct = undefined attrClear _ = cookieClearDomain cookieDomain :: AttrLabelProxy "domain" cookieDomain = AttrLabelProxy cookieReadPath :: MonadIO m => Cookie -> m (Maybe T.Text) cookieReadPath s = liftIO $ withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 24) :: IO CString result <- convertIfNonNull val $ \val' -> do val'' <- cstringToText val' return val'' return result cookieWritePath :: MonadIO m => Cookie -> CString -> m () cookieWritePath s val = liftIO $ withManagedPtr s $ \ptr -> do poke (ptr `plusPtr` 24) (val :: CString) cookieClearPath :: MonadIO m => Cookie -> m () cookieClearPath s = liftIO $ withManagedPtr s $ \ptr -> do poke (ptr `plusPtr` 24) (nullPtr :: CString) data CookiePathFieldInfo instance AttrInfo CookiePathFieldInfo where type AttrAllowedOps CookiePathFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear] type AttrSetTypeConstraint CookiePathFieldInfo = (~) CString type AttrBaseTypeConstraint CookiePathFieldInfo = (~) Cookie type AttrGetType CookiePathFieldInfo = Maybe T.Text type AttrLabel CookiePathFieldInfo = "path" attrGet _ = cookieReadPath attrSet _ = cookieWritePath attrConstruct = undefined attrClear _ = cookieClearPath cookiePath :: AttrLabelProxy "path" cookiePath = AttrLabelProxy cookieReadExpires :: MonadIO m => Cookie -> m (Maybe Date) cookieReadExpires s = liftIO $ withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 32) :: IO (Ptr Date) result <- convertIfNonNull val $ \val' -> do val'' <- (newBoxed Date) val' return val'' return result cookieWriteExpires :: MonadIO m => Cookie -> Ptr Date -> m () cookieWriteExpires s val = liftIO $ withManagedPtr s $ \ptr -> do poke (ptr `plusPtr` 32) (val :: Ptr Date) cookieClearExpires :: MonadIO m => Cookie -> m () cookieClearExpires s = liftIO $ withManagedPtr s $ \ptr -> do poke (ptr `plusPtr` 32) (nullPtr :: Ptr Date) data CookieExpiresFieldInfo instance AttrInfo CookieExpiresFieldInfo where type AttrAllowedOps CookieExpiresFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear] type AttrSetTypeConstraint CookieExpiresFieldInfo = (~) (Ptr Date) type AttrBaseTypeConstraint CookieExpiresFieldInfo = (~) Cookie type AttrGetType CookieExpiresFieldInfo = Maybe Date type AttrLabel CookieExpiresFieldInfo = "expires" attrGet _ = cookieReadExpires attrSet _ = cookieWriteExpires attrConstruct = undefined attrClear _ = cookieClearExpires cookieExpires :: AttrLabelProxy "expires" cookieExpires = AttrLabelProxy cookieReadSecure :: MonadIO m => Cookie -> m Bool cookieReadSecure s = liftIO $ withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 40) :: IO CInt let val' = (/= 0) val return val' cookieWriteSecure :: MonadIO m => Cookie -> Bool -> m () cookieWriteSecure s val = liftIO $ withManagedPtr s $ \ptr -> do let val' = (fromIntegral . fromEnum) val poke (ptr `plusPtr` 40) (val' :: CInt) data CookieSecureFieldInfo instance AttrInfo CookieSecureFieldInfo where type AttrAllowedOps CookieSecureFieldInfo = '[ 'AttrSet, 'AttrGet] type AttrSetTypeConstraint CookieSecureFieldInfo = (~) Bool type AttrBaseTypeConstraint CookieSecureFieldInfo = (~) Cookie type AttrGetType CookieSecureFieldInfo = Bool type AttrLabel CookieSecureFieldInfo = "secure" attrGet _ = cookieReadSecure attrSet _ = cookieWriteSecure attrConstruct = undefined attrClear _ = undefined cookieSecure :: AttrLabelProxy "secure" cookieSecure = AttrLabelProxy cookieReadHttpOnly :: MonadIO m => Cookie -> m Bool cookieReadHttpOnly s = liftIO $ withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 44) :: IO CInt let val' = (/= 0) val return val' cookieWriteHttpOnly :: MonadIO m => Cookie -> Bool -> m () cookieWriteHttpOnly s val = liftIO $ withManagedPtr s $ \ptr -> do let val' = (fromIntegral . fromEnum) val poke (ptr `plusPtr` 44) (val' :: CInt) data CookieHttpOnlyFieldInfo instance AttrInfo CookieHttpOnlyFieldInfo where type AttrAllowedOps CookieHttpOnlyFieldInfo = '[ 'AttrSet, 'AttrGet] type AttrSetTypeConstraint CookieHttpOnlyFieldInfo = (~) Bool type AttrBaseTypeConstraint CookieHttpOnlyFieldInfo = (~) Cookie type AttrGetType CookieHttpOnlyFieldInfo = Bool type AttrLabel CookieHttpOnlyFieldInfo = "http_only" attrGet _ = cookieReadHttpOnly attrSet _ = cookieWriteHttpOnly attrConstruct = undefined attrClear _ = undefined cookieHttpOnly :: AttrLabelProxy "httpOnly" cookieHttpOnly = AttrLabelProxy type instance AttributeList Cookie = CookieAttributeList type CookieAttributeList = ('[ '("name", CookieNameFieldInfo), '("value", CookieValueFieldInfo), '("domain", CookieDomainFieldInfo), '("path", CookiePathFieldInfo), '("expires", CookieExpiresFieldInfo), '("secure", CookieSecureFieldInfo), '("httpOnly", CookieHttpOnlyFieldInfo)] :: [(Symbol, *)]) -- method Cookie::new -- method type : Constructor -- Args : [Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "value", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "domain", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "path", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "max_age", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface "Soup" "Cookie") -- throws : False -- Skip return : False foreign import ccall "soup_cookie_new" soup_cookie_new :: CString -> -- name : TBasicType TUTF8 CString -> -- value : TBasicType TUTF8 CString -> -- domain : TBasicType TUTF8 CString -> -- path : TBasicType TUTF8 Int32 -> -- max_age : TBasicType TInt IO (Ptr Cookie) cookieNew :: (MonadIO m) => T.Text -- name -> T.Text -- value -> T.Text -- domain -> T.Text -- path -> Int32 -- maxAge -> m Cookie -- result cookieNew name value domain path maxAge = liftIO $ do name' <- textToCString name value' <- textToCString value domain' <- textToCString domain path' <- textToCString path result <- soup_cookie_new name' value' domain' path' maxAge checkUnexpectedReturnNULL "soup_cookie_new" result result' <- (wrapBoxed Cookie) result freeMem name' freeMem value' freeMem domain' freeMem path' return result' -- method Cookie::applies_to_uri -- method type : OrdinaryMethod -- Args : [Arg {argCName = "_obj", argType = TInterface "Soup" "Cookie", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "uri", argType = TInterface "Soup" "URI", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "soup_cookie_applies_to_uri" soup_cookie_applies_to_uri :: Ptr Cookie -> -- _obj : TInterface "Soup" "Cookie" Ptr URI -> -- uri : TInterface "Soup" "URI" IO CInt cookieAppliesToUri :: (MonadIO m) => Cookie -- _obj -> URI -- uri -> m Bool -- result cookieAppliesToUri _obj uri = liftIO $ do let _obj' = unsafeManagedPtrGetPtr _obj let uri' = unsafeManagedPtrGetPtr uri result <- soup_cookie_applies_to_uri _obj' uri' let result' = (/= 0) result touchManagedPtr _obj touchManagedPtr uri return result' data CookieAppliesToUriMethodInfo instance (signature ~ (URI -> m Bool), MonadIO m) => MethodInfo CookieAppliesToUriMethodInfo Cookie signature where overloadedMethod _ = cookieAppliesToUri -- method Cookie::copy -- method type : OrdinaryMethod -- Args : [Arg {argCName = "_obj", argType = TInterface "Soup" "Cookie", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface "Soup" "Cookie") -- throws : False -- Skip return : False foreign import ccall "soup_cookie_copy" soup_cookie_copy :: Ptr Cookie -> -- _obj : TInterface "Soup" "Cookie" IO (Ptr Cookie) cookieCopy :: (MonadIO m) => Cookie -- _obj -> m Cookie -- result cookieCopy _obj = liftIO $ do let _obj' = unsafeManagedPtrGetPtr _obj result <- soup_cookie_copy _obj' checkUnexpectedReturnNULL "soup_cookie_copy" result result' <- (wrapBoxed Cookie) result touchManagedPtr _obj return result' data CookieCopyMethodInfo instance (signature ~ (m Cookie), MonadIO m) => MethodInfo CookieCopyMethodInfo Cookie signature where overloadedMethod _ = cookieCopy -- method Cookie::domain_matches -- method type : OrdinaryMethod -- Args : [Arg {argCName = "_obj", argType = TInterface "Soup" "Cookie", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "host", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "soup_cookie_domain_matches" soup_cookie_domain_matches :: Ptr Cookie -> -- _obj : TInterface "Soup" "Cookie" CString -> -- host : TBasicType TUTF8 IO CInt cookieDomainMatches :: (MonadIO m) => Cookie -- _obj -> T.Text -- host -> m Bool -- result cookieDomainMatches _obj host = liftIO $ do let _obj' = unsafeManagedPtrGetPtr _obj host' <- textToCString host result <- soup_cookie_domain_matches _obj' host' let result' = (/= 0) result touchManagedPtr _obj freeMem host' return result' data CookieDomainMatchesMethodInfo instance (signature ~ (T.Text -> m Bool), MonadIO m) => MethodInfo CookieDomainMatchesMethodInfo Cookie signature where overloadedMethod _ = cookieDomainMatches -- method Cookie::equal -- method type : OrdinaryMethod -- Args : [Arg {argCName = "_obj", argType = TInterface "Soup" "Cookie", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cookie2", argType = TInterface "Soup" "Cookie", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "soup_cookie_equal" soup_cookie_equal :: Ptr Cookie -> -- _obj : TInterface "Soup" "Cookie" Ptr Cookie -> -- cookie2 : TInterface "Soup" "Cookie" IO CInt cookieEqual :: (MonadIO m) => Cookie -- _obj -> Cookie -- cookie2 -> m Bool -- result cookieEqual _obj cookie2 = liftIO $ do let _obj' = unsafeManagedPtrGetPtr _obj let cookie2' = unsafeManagedPtrGetPtr cookie2 result <- soup_cookie_equal _obj' cookie2' let result' = (/= 0) result touchManagedPtr _obj touchManagedPtr cookie2 return result' data CookieEqualMethodInfo instance (signature ~ (Cookie -> m Bool), MonadIO m) => MethodInfo CookieEqualMethodInfo Cookie signature where overloadedMethod _ = cookieEqual -- method Cookie::free -- method type : OrdinaryMethod -- Args : [Arg {argCName = "_obj", argType = TInterface "Soup" "Cookie", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "soup_cookie_free" soup_cookie_free :: Ptr Cookie -> -- _obj : TInterface "Soup" "Cookie" IO () cookieFree :: (MonadIO m) => Cookie -- _obj -> m () -- result cookieFree _obj = liftIO $ do let _obj' = unsafeManagedPtrGetPtr _obj soup_cookie_free _obj' touchManagedPtr _obj return () data CookieFreeMethodInfo instance (signature ~ (m ()), MonadIO m) => MethodInfo CookieFreeMethodInfo Cookie signature where overloadedMethod _ = cookieFree -- method Cookie::get_domain -- method type : OrdinaryMethod -- Args : [Arg {argCName = "_obj", argType = TInterface "Soup" "Cookie", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TUTF8) -- throws : False -- Skip return : False foreign import ccall "soup_cookie_get_domain" soup_cookie_get_domain :: Ptr Cookie -> -- _obj : TInterface "Soup" "Cookie" IO CString cookieGetDomain :: (MonadIO m) => Cookie -- _obj -> m T.Text -- result cookieGetDomain _obj = liftIO $ do let _obj' = unsafeManagedPtrGetPtr _obj result <- soup_cookie_get_domain _obj' checkUnexpectedReturnNULL "soup_cookie_get_domain" result result' <- cstringToText result touchManagedPtr _obj return result' data CookieGetDomainMethodInfo instance (signature ~ (m T.Text), MonadIO m) => MethodInfo CookieGetDomainMethodInfo Cookie signature where overloadedMethod _ = cookieGetDomain -- method Cookie::get_expires -- method type : OrdinaryMethod -- Args : [Arg {argCName = "_obj", argType = TInterface "Soup" "Cookie", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface "Soup" "Date") -- throws : False -- Skip return : False foreign import ccall "soup_cookie_get_expires" soup_cookie_get_expires :: Ptr Cookie -> -- _obj : TInterface "Soup" "Cookie" IO (Ptr Date) cookieGetExpires :: (MonadIO m) => Cookie -- _obj -> m Date -- result cookieGetExpires _obj = liftIO $ do let _obj' = unsafeManagedPtrGetPtr _obj result <- soup_cookie_get_expires _obj' checkUnexpectedReturnNULL "soup_cookie_get_expires" result result' <- (newBoxed Date) result touchManagedPtr _obj return result' data CookieGetExpiresMethodInfo instance (signature ~ (m Date), MonadIO m) => MethodInfo CookieGetExpiresMethodInfo Cookie signature where overloadedMethod _ = cookieGetExpires -- method Cookie::get_http_only -- method type : OrdinaryMethod -- Args : [Arg {argCName = "_obj", argType = TInterface "Soup" "Cookie", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "soup_cookie_get_http_only" soup_cookie_get_http_only :: Ptr Cookie -> -- _obj : TInterface "Soup" "Cookie" IO CInt cookieGetHttpOnly :: (MonadIO m) => Cookie -- _obj -> m Bool -- result cookieGetHttpOnly _obj = liftIO $ do let _obj' = unsafeManagedPtrGetPtr _obj result <- soup_cookie_get_http_only _obj' let result' = (/= 0) result touchManagedPtr _obj return result' data CookieGetHttpOnlyMethodInfo instance (signature ~ (m Bool), MonadIO m) => MethodInfo CookieGetHttpOnlyMethodInfo Cookie signature where overloadedMethod _ = cookieGetHttpOnly -- method Cookie::get_name -- method type : OrdinaryMethod -- Args : [Arg {argCName = "_obj", argType = TInterface "Soup" "Cookie", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TUTF8) -- throws : False -- Skip return : False foreign import ccall "soup_cookie_get_name" soup_cookie_get_name :: Ptr Cookie -> -- _obj : TInterface "Soup" "Cookie" IO CString cookieGetName :: (MonadIO m) => Cookie -- _obj -> m T.Text -- result cookieGetName _obj = liftIO $ do let _obj' = unsafeManagedPtrGetPtr _obj result <- soup_cookie_get_name _obj' checkUnexpectedReturnNULL "soup_cookie_get_name" result result' <- cstringToText result touchManagedPtr _obj return result' data CookieGetNameMethodInfo instance (signature ~ (m T.Text), MonadIO m) => MethodInfo CookieGetNameMethodInfo Cookie signature where overloadedMethod _ = cookieGetName -- method Cookie::get_path -- method type : OrdinaryMethod -- Args : [Arg {argCName = "_obj", argType = TInterface "Soup" "Cookie", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TUTF8) -- throws : False -- Skip return : False foreign import ccall "soup_cookie_get_path" soup_cookie_get_path :: Ptr Cookie -> -- _obj : TInterface "Soup" "Cookie" IO CString cookieGetPath :: (MonadIO m) => Cookie -- _obj -> m T.Text -- result cookieGetPath _obj = liftIO $ do let _obj' = unsafeManagedPtrGetPtr _obj result <- soup_cookie_get_path _obj' checkUnexpectedReturnNULL "soup_cookie_get_path" result result' <- cstringToText result touchManagedPtr _obj return result' data CookieGetPathMethodInfo instance (signature ~ (m T.Text), MonadIO m) => MethodInfo CookieGetPathMethodInfo Cookie signature where overloadedMethod _ = cookieGetPath -- method Cookie::get_secure -- method type : OrdinaryMethod -- Args : [Arg {argCName = "_obj", argType = TInterface "Soup" "Cookie", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "soup_cookie_get_secure" soup_cookie_get_secure :: Ptr Cookie -> -- _obj : TInterface "Soup" "Cookie" IO CInt cookieGetSecure :: (MonadIO m) => Cookie -- _obj -> m Bool -- result cookieGetSecure _obj = liftIO $ do let _obj' = unsafeManagedPtrGetPtr _obj result <- soup_cookie_get_secure _obj' let result' = (/= 0) result touchManagedPtr _obj return result' data CookieGetSecureMethodInfo instance (signature ~ (m Bool), MonadIO m) => MethodInfo CookieGetSecureMethodInfo Cookie signature where overloadedMethod _ = cookieGetSecure -- method Cookie::get_value -- method type : OrdinaryMethod -- Args : [Arg {argCName = "_obj", argType = TInterface "Soup" "Cookie", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TUTF8) -- throws : False -- Skip return : False foreign import ccall "soup_cookie_get_value" soup_cookie_get_value :: Ptr Cookie -> -- _obj : TInterface "Soup" "Cookie" IO CString cookieGetValue :: (MonadIO m) => Cookie -- _obj -> m T.Text -- result cookieGetValue _obj = liftIO $ do let _obj' = unsafeManagedPtrGetPtr _obj result <- soup_cookie_get_value _obj' checkUnexpectedReturnNULL "soup_cookie_get_value" result result' <- cstringToText result touchManagedPtr _obj return result' data CookieGetValueMethodInfo instance (signature ~ (m T.Text), MonadIO m) => MethodInfo CookieGetValueMethodInfo Cookie signature where overloadedMethod _ = cookieGetValue -- method Cookie::set_domain -- method type : OrdinaryMethod -- Args : [Arg {argCName = "_obj", argType = TInterface "Soup" "Cookie", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "domain", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "soup_cookie_set_domain" soup_cookie_set_domain :: Ptr Cookie -> -- _obj : TInterface "Soup" "Cookie" CString -> -- domain : TBasicType TUTF8 IO () cookieSetDomain :: (MonadIO m) => Cookie -- _obj -> T.Text -- domain -> m () -- result cookieSetDomain _obj domain = liftIO $ do let _obj' = unsafeManagedPtrGetPtr _obj domain' <- textToCString domain soup_cookie_set_domain _obj' domain' touchManagedPtr _obj freeMem domain' return () data CookieSetDomainMethodInfo instance (signature ~ (T.Text -> m ()), MonadIO m) => MethodInfo CookieSetDomainMethodInfo Cookie signature where overloadedMethod _ = cookieSetDomain -- method Cookie::set_expires -- method type : OrdinaryMethod -- Args : [Arg {argCName = "_obj", argType = TInterface "Soup" "Cookie", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "expires", argType = TInterface "Soup" "Date", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "soup_cookie_set_expires" soup_cookie_set_expires :: Ptr Cookie -> -- _obj : TInterface "Soup" "Cookie" Ptr Date -> -- expires : TInterface "Soup" "Date" IO () cookieSetExpires :: (MonadIO m) => Cookie -- _obj -> Date -- expires -> m () -- result cookieSetExpires _obj expires = liftIO $ do let _obj' = unsafeManagedPtrGetPtr _obj let expires' = unsafeManagedPtrGetPtr expires soup_cookie_set_expires _obj' expires' touchManagedPtr _obj touchManagedPtr expires return () data CookieSetExpiresMethodInfo instance (signature ~ (Date -> m ()), MonadIO m) => MethodInfo CookieSetExpiresMethodInfo Cookie signature where overloadedMethod _ = cookieSetExpires -- method Cookie::set_http_only -- method type : OrdinaryMethod -- Args : [Arg {argCName = "_obj", argType = TInterface "Soup" "Cookie", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "http_only", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "soup_cookie_set_http_only" soup_cookie_set_http_only :: Ptr Cookie -> -- _obj : TInterface "Soup" "Cookie" CInt -> -- http_only : TBasicType TBoolean IO () cookieSetHttpOnly :: (MonadIO m) => Cookie -- _obj -> Bool -- httpOnly -> m () -- result cookieSetHttpOnly _obj httpOnly = liftIO $ do let _obj' = unsafeManagedPtrGetPtr _obj let httpOnly' = (fromIntegral . fromEnum) httpOnly soup_cookie_set_http_only _obj' httpOnly' touchManagedPtr _obj return () data CookieSetHttpOnlyMethodInfo instance (signature ~ (Bool -> m ()), MonadIO m) => MethodInfo CookieSetHttpOnlyMethodInfo Cookie signature where overloadedMethod _ = cookieSetHttpOnly -- method Cookie::set_max_age -- method type : OrdinaryMethod -- Args : [Arg {argCName = "_obj", argType = TInterface "Soup" "Cookie", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "max_age", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "soup_cookie_set_max_age" soup_cookie_set_max_age :: Ptr Cookie -> -- _obj : TInterface "Soup" "Cookie" Int32 -> -- max_age : TBasicType TInt IO () cookieSetMaxAge :: (MonadIO m) => Cookie -- _obj -> Int32 -- maxAge -> m () -- result cookieSetMaxAge _obj maxAge = liftIO $ do let _obj' = unsafeManagedPtrGetPtr _obj soup_cookie_set_max_age _obj' maxAge touchManagedPtr _obj return () data CookieSetMaxAgeMethodInfo instance (signature ~ (Int32 -> m ()), MonadIO m) => MethodInfo CookieSetMaxAgeMethodInfo Cookie signature where overloadedMethod _ = cookieSetMaxAge -- method Cookie::set_name -- method type : OrdinaryMethod -- Args : [Arg {argCName = "_obj", argType = TInterface "Soup" "Cookie", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "soup_cookie_set_name" soup_cookie_set_name :: Ptr Cookie -> -- _obj : TInterface "Soup" "Cookie" CString -> -- name : TBasicType TUTF8 IO () cookieSetName :: (MonadIO m) => Cookie -- _obj -> T.Text -- name -> m () -- result cookieSetName _obj name = liftIO $ do let _obj' = unsafeManagedPtrGetPtr _obj name' <- textToCString name soup_cookie_set_name _obj' name' touchManagedPtr _obj freeMem name' return () data CookieSetNameMethodInfo instance (signature ~ (T.Text -> m ()), MonadIO m) => MethodInfo CookieSetNameMethodInfo Cookie signature where overloadedMethod _ = cookieSetName -- method Cookie::set_path -- method type : OrdinaryMethod -- Args : [Arg {argCName = "_obj", argType = TInterface "Soup" "Cookie", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "path", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "soup_cookie_set_path" soup_cookie_set_path :: Ptr Cookie -> -- _obj : TInterface "Soup" "Cookie" CString -> -- path : TBasicType TUTF8 IO () cookieSetPath :: (MonadIO m) => Cookie -- _obj -> T.Text -- path -> m () -- result cookieSetPath _obj path = liftIO $ do let _obj' = unsafeManagedPtrGetPtr _obj path' <- textToCString path soup_cookie_set_path _obj' path' touchManagedPtr _obj freeMem path' return () data CookieSetPathMethodInfo instance (signature ~ (T.Text -> m ()), MonadIO m) => MethodInfo CookieSetPathMethodInfo Cookie signature where overloadedMethod _ = cookieSetPath -- method Cookie::set_secure -- method type : OrdinaryMethod -- Args : [Arg {argCName = "_obj", argType = TInterface "Soup" "Cookie", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "secure", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "soup_cookie_set_secure" soup_cookie_set_secure :: Ptr Cookie -> -- _obj : TInterface "Soup" "Cookie" CInt -> -- secure : TBasicType TBoolean IO () cookieSetSecure :: (MonadIO m) => Cookie -- _obj -> Bool -- secure -> m () -- result cookieSetSecure _obj secure = liftIO $ do let _obj' = unsafeManagedPtrGetPtr _obj let secure' = (fromIntegral . fromEnum) secure soup_cookie_set_secure _obj' secure' touchManagedPtr _obj return () data CookieSetSecureMethodInfo instance (signature ~ (Bool -> m ()), MonadIO m) => MethodInfo CookieSetSecureMethodInfo Cookie signature where overloadedMethod _ = cookieSetSecure -- method Cookie::set_value -- method type : OrdinaryMethod -- Args : [Arg {argCName = "_obj", argType = TInterface "Soup" "Cookie", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "value", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "soup_cookie_set_value" soup_cookie_set_value :: Ptr Cookie -> -- _obj : TInterface "Soup" "Cookie" CString -> -- value : TBasicType TUTF8 IO () cookieSetValue :: (MonadIO m) => Cookie -- _obj -> T.Text -- value -> m () -- result cookieSetValue _obj value = liftIO $ do let _obj' = unsafeManagedPtrGetPtr _obj value' <- textToCString value soup_cookie_set_value _obj' value' touchManagedPtr _obj freeMem value' return () data CookieSetValueMethodInfo instance (signature ~ (T.Text -> m ()), MonadIO m) => MethodInfo CookieSetValueMethodInfo Cookie signature where overloadedMethod _ = cookieSetValue -- method Cookie::to_cookie_header -- method type : OrdinaryMethod -- Args : [Arg {argCName = "_obj", argType = TInterface "Soup" "Cookie", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TUTF8) -- throws : False -- Skip return : False foreign import ccall "soup_cookie_to_cookie_header" soup_cookie_to_cookie_header :: Ptr Cookie -> -- _obj : TInterface "Soup" "Cookie" IO CString cookieToCookieHeader :: (MonadIO m) => Cookie -- _obj -> m T.Text -- result cookieToCookieHeader _obj = liftIO $ do let _obj' = unsafeManagedPtrGetPtr _obj result <- soup_cookie_to_cookie_header _obj' checkUnexpectedReturnNULL "soup_cookie_to_cookie_header" result result' <- cstringToText result freeMem result touchManagedPtr _obj return result' data CookieToCookieHeaderMethodInfo instance (signature ~ (m T.Text), MonadIO m) => MethodInfo CookieToCookieHeaderMethodInfo Cookie signature where overloadedMethod _ = cookieToCookieHeader -- method Cookie::to_set_cookie_header -- method type : OrdinaryMethod -- Args : [Arg {argCName = "_obj", argType = TInterface "Soup" "Cookie", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TUTF8) -- throws : False -- Skip return : False foreign import ccall "soup_cookie_to_set_cookie_header" soup_cookie_to_set_cookie_header :: Ptr Cookie -> -- _obj : TInterface "Soup" "Cookie" IO CString cookieToSetCookieHeader :: (MonadIO m) => Cookie -- _obj -> m T.Text -- result cookieToSetCookieHeader _obj = liftIO $ do let _obj' = unsafeManagedPtrGetPtr _obj result <- soup_cookie_to_set_cookie_header _obj' checkUnexpectedReturnNULL "soup_cookie_to_set_cookie_header" result result' <- cstringToText result freeMem result touchManagedPtr _obj return result' data CookieToSetCookieHeaderMethodInfo instance (signature ~ (m T.Text), MonadIO m) => MethodInfo CookieToSetCookieHeaderMethodInfo Cookie signature where overloadedMethod _ = cookieToSetCookieHeader -- method Cookie::parse -- method type : MemberFunction -- Args : [Arg {argCName = "header", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "origin", argType = TInterface "Soup" "URI", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface "Soup" "Cookie") -- throws : False -- Skip return : False foreign import ccall "soup_cookie_parse" soup_cookie_parse :: CString -> -- header : TBasicType TUTF8 Ptr URI -> -- origin : TInterface "Soup" "URI" IO (Ptr Cookie) cookieParse :: (MonadIO m) => T.Text -- header -> URI -- origin -> m (Maybe Cookie) -- result cookieParse header origin = liftIO $ do header' <- textToCString header let origin' = unsafeManagedPtrGetPtr origin result <- soup_cookie_parse header' origin' maybeResult <- convertIfNonNull result $ \result' -> do result'' <- (wrapBoxed Cookie) result' return result'' touchManagedPtr origin freeMem header' return maybeResult type family ResolveCookieMethod (t :: Symbol) (o :: *) :: * where ResolveCookieMethod "appliesToUri" o = CookieAppliesToUriMethodInfo ResolveCookieMethod "copy" o = CookieCopyMethodInfo ResolveCookieMethod "domainMatches" o = CookieDomainMatchesMethodInfo ResolveCookieMethod "equal" o = CookieEqualMethodInfo ResolveCookieMethod "free" o = CookieFreeMethodInfo ResolveCookieMethod "toCookieHeader" o = CookieToCookieHeaderMethodInfo ResolveCookieMethod "toSetCookieHeader" o = CookieToSetCookieHeaderMethodInfo ResolveCookieMethod "getDomain" o = CookieGetDomainMethodInfo ResolveCookieMethod "getExpires" o = CookieGetExpiresMethodInfo ResolveCookieMethod "getHttpOnly" o = CookieGetHttpOnlyMethodInfo ResolveCookieMethod "getName" o = CookieGetNameMethodInfo ResolveCookieMethod "getPath" o = CookieGetPathMethodInfo ResolveCookieMethod "getSecure" o = CookieGetSecureMethodInfo ResolveCookieMethod "getValue" o = CookieGetValueMethodInfo ResolveCookieMethod "setDomain" o = CookieSetDomainMethodInfo ResolveCookieMethod "setExpires" o = CookieSetExpiresMethodInfo ResolveCookieMethod "setHttpOnly" o = CookieSetHttpOnlyMethodInfo ResolveCookieMethod "setMaxAge" o = CookieSetMaxAgeMethodInfo ResolveCookieMethod "setName" o = CookieSetNameMethodInfo ResolveCookieMethod "setPath" o = CookieSetPathMethodInfo ResolveCookieMethod "setSecure" o = CookieSetSecureMethodInfo ResolveCookieMethod "setValue" o = CookieSetValueMethodInfo ResolveCookieMethod l o = MethodResolutionFailed l o instance (info ~ ResolveCookieMethod t Cookie, MethodInfo info Cookie p) => IsLabelProxy t (Cookie -> p) where fromLabelProxy _ = overloadedMethod (MethodProxy :: MethodProxy info) #if MIN_VERSION_base(4,9,0) instance (info ~ ResolveCookieMethod t Cookie, MethodInfo info Cookie p) => IsLabel t (Cookie -> p) where fromLabel _ = overloadedMethod (MethodProxy :: MethodProxy info) #endif