{- | Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte License : LGPL-2.1 Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc) 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-'Nothing' if the cookie uses either the original \"expires\" attribute, or the newer \"max-age\" attribute. If /@expires@/ is 'Nothing', it indicates that neither \"expires\" nor \"max-age\" was specified, and the cookie expires at the end of the session. If /@httpOnly@/ 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. /Since: 2.24/ -} #define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \ && !defined(__HADDOCK_VERSION__)) module GI.Soup.Structs.Cookie ( -- * Exported types Cookie(..) , newZeroCookie , noCookie , -- * Methods -- ** appliesToUri #method:appliesToUri# #if ENABLE_OVERLOADING CookieAppliesToUriMethodInfo , #endif cookieAppliesToUri , -- ** copy #method:copy# #if ENABLE_OVERLOADING CookieCopyMethodInfo , #endif cookieCopy , -- ** domainMatches #method:domainMatches# #if ENABLE_OVERLOADING CookieDomainMatchesMethodInfo , #endif cookieDomainMatches , -- ** equal #method:equal# #if ENABLE_OVERLOADING CookieEqualMethodInfo , #endif cookieEqual , -- ** free #method:free# #if ENABLE_OVERLOADING CookieFreeMethodInfo , #endif cookieFree , -- ** getDomain #method:getDomain# #if ENABLE_OVERLOADING CookieGetDomainMethodInfo , #endif cookieGetDomain , -- ** getExpires #method:getExpires# #if ENABLE_OVERLOADING CookieGetExpiresMethodInfo , #endif cookieGetExpires , -- ** getHttpOnly #method:getHttpOnly# #if ENABLE_OVERLOADING CookieGetHttpOnlyMethodInfo , #endif cookieGetHttpOnly , -- ** getName #method:getName# #if ENABLE_OVERLOADING CookieGetNameMethodInfo , #endif cookieGetName , -- ** getPath #method:getPath# #if ENABLE_OVERLOADING CookieGetPathMethodInfo , #endif cookieGetPath , -- ** getSecure #method:getSecure# #if ENABLE_OVERLOADING CookieGetSecureMethodInfo , #endif cookieGetSecure , -- ** getValue #method:getValue# #if ENABLE_OVERLOADING CookieGetValueMethodInfo , #endif cookieGetValue , -- ** new #method:new# cookieNew , -- ** parse #method:parse# cookieParse , -- ** setDomain #method:setDomain# #if ENABLE_OVERLOADING CookieSetDomainMethodInfo , #endif cookieSetDomain , -- ** setExpires #method:setExpires# #if ENABLE_OVERLOADING CookieSetExpiresMethodInfo , #endif cookieSetExpires , -- ** setHttpOnly #method:setHttpOnly# #if ENABLE_OVERLOADING CookieSetHttpOnlyMethodInfo , #endif cookieSetHttpOnly , -- ** setMaxAge #method:setMaxAge# #if ENABLE_OVERLOADING CookieSetMaxAgeMethodInfo , #endif cookieSetMaxAge , -- ** setName #method:setName# #if ENABLE_OVERLOADING CookieSetNameMethodInfo , #endif cookieSetName , -- ** setPath #method:setPath# #if ENABLE_OVERLOADING CookieSetPathMethodInfo , #endif cookieSetPath , -- ** setSecure #method:setSecure# #if ENABLE_OVERLOADING CookieSetSecureMethodInfo , #endif cookieSetSecure , -- ** setValue #method:setValue# #if ENABLE_OVERLOADING CookieSetValueMethodInfo , #endif cookieSetValue , -- ** toCookieHeader #method:toCookieHeader# #if ENABLE_OVERLOADING CookieToCookieHeaderMethodInfo , #endif cookieToCookieHeader , -- ** toSetCookieHeader #method:toSetCookieHeader# #if ENABLE_OVERLOADING CookieToSetCookieHeaderMethodInfo , #endif cookieToSetCookieHeader , -- * Properties -- ** domain #attr:domain# {- | the \"domain\" attribute, or else the hostname that the cookie came from. -} clearCookieDomain , #if ENABLE_OVERLOADING cookie_domain , #endif getCookieDomain , setCookieDomain , -- ** expires #attr:expires# {- | the cookie expiration time, or 'Nothing' for a session cookie -} clearCookieExpires , #if ENABLE_OVERLOADING cookie_expires , #endif getCookieExpires , setCookieExpires , -- ** httpOnly #attr:httpOnly# {- | 'True' if the cookie should not be exposed to scripts -} #if ENABLE_OVERLOADING cookie_httpOnly , #endif getCookieHttpOnly , setCookieHttpOnly , -- ** name #attr:name# {- | the cookie name -} clearCookieName , #if ENABLE_OVERLOADING cookie_name , #endif getCookieName , setCookieName , -- ** path #attr:path# {- | the \"path\" attribute, or 'Nothing' -} clearCookiePath , #if ENABLE_OVERLOADING cookie_path , #endif getCookiePath , setCookiePath , -- ** secure #attr:secure# {- | 'True' if the cookie should only be tranferred over SSL -} #if ENABLE_OVERLOADING cookie_secure , #endif getCookieSecure , setCookieSecure , -- ** value #attr:value# {- | the cookie value -} clearCookieValue , #if ENABLE_OVERLOADING cookie_value , #endif getCookieValue , setCookieValue , ) where import Data.GI.Base.ShortPrelude import qualified Data.GI.Base.ShortPrelude as SP import qualified Data.GI.Base.Overloading as O import qualified Prelude as P import qualified Data.GI.Base.Attributes as GI.Attributes import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr import qualified Data.GI.Base.GClosure as B.GClosure import qualified Data.GI.Base.GError as B.GError import qualified Data.GI.Base.GVariant as B.GVariant import qualified Data.GI.Base.GValue as B.GValue import qualified Data.GI.Base.GParamSpec as B.GParamSpec import qualified Data.GI.Base.CallStack as B.CallStack import qualified Data.GI.Base.Properties as B.Properties import qualified Data.Text as T import qualified Data.ByteString.Char8 as B import qualified Data.Map as Map import qualified Foreign.Ptr as FP import qualified GHC.OverloadedLabels as OL import {-# SOURCE #-} qualified GI.Soup.Structs.Date as Soup.Date import {-# SOURCE #-} qualified GI.Soup.Structs.URI as Soup.URI -- | Memory-managed wrapper type. newtype Cookie = Cookie (ManagedPtr 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 -- | A convenience alias for `Nothing` :: `Maybe` `Cookie`. noCookie :: Maybe Cookie noCookie = Nothing {- | Get the value of the “@name@” field. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.get' cookie #name @ -} getCookieName :: MonadIO m => Cookie -> m (Maybe T.Text) getCookieName s = liftIO $ withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 0) :: IO CString result <- SP.convertIfNonNull val $ \val' -> do val'' <- cstringToText val' return val'' return result {- | Set the value of the “@name@” field. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.set' cookie [ #name 'Data.GI.Base.Attributes.:=' value ] @ -} setCookieName :: MonadIO m => Cookie -> CString -> m () setCookieName s val = liftIO $ withManagedPtr s $ \ptr -> do poke (ptr `plusPtr` 0) (val :: CString) {- | Set the value of the “@name@” field to `Nothing`. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.clear' #name @ -} clearCookieName :: MonadIO m => Cookie -> m () clearCookieName s = liftIO $ withManagedPtr s $ \ptr -> do poke (ptr `plusPtr` 0) (FP.nullPtr :: CString) #if ENABLE_OVERLOADING 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" type AttrOrigin CookieNameFieldInfo = Cookie attrGet _ = getCookieName attrSet _ = setCookieName attrConstruct = undefined attrClear _ = clearCookieName cookie_name :: AttrLabelProxy "name" cookie_name = AttrLabelProxy #endif {- | Get the value of the “@value@” field. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.get' cookie #value @ -} getCookieValue :: MonadIO m => Cookie -> m (Maybe T.Text) getCookieValue s = liftIO $ withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 8) :: IO CString result <- SP.convertIfNonNull val $ \val' -> do val'' <- cstringToText val' return val'' return result {- | Set the value of the “@value@” field. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.set' cookie [ #value 'Data.GI.Base.Attributes.:=' value ] @ -} setCookieValue :: MonadIO m => Cookie -> CString -> m () setCookieValue s val = liftIO $ withManagedPtr s $ \ptr -> do poke (ptr `plusPtr` 8) (val :: CString) {- | Set the value of the “@value@” field to `Nothing`. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.clear' #value @ -} clearCookieValue :: MonadIO m => Cookie -> m () clearCookieValue s = liftIO $ withManagedPtr s $ \ptr -> do poke (ptr `plusPtr` 8) (FP.nullPtr :: CString) #if ENABLE_OVERLOADING 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" type AttrOrigin CookieValueFieldInfo = Cookie attrGet _ = getCookieValue attrSet _ = setCookieValue attrConstruct = undefined attrClear _ = clearCookieValue cookie_value :: AttrLabelProxy "value" cookie_value = AttrLabelProxy #endif {- | Get the value of the “@domain@” field. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.get' cookie #domain @ -} getCookieDomain :: MonadIO m => Cookie -> m (Maybe T.Text) getCookieDomain s = liftIO $ withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 16) :: IO CString result <- SP.convertIfNonNull val $ \val' -> do val'' <- cstringToText val' return val'' return result {- | Set the value of the “@domain@” field. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.set' cookie [ #domain 'Data.GI.Base.Attributes.:=' value ] @ -} setCookieDomain :: MonadIO m => Cookie -> CString -> m () setCookieDomain s val = liftIO $ withManagedPtr s $ \ptr -> do poke (ptr `plusPtr` 16) (val :: CString) {- | Set the value of the “@domain@” field to `Nothing`. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.clear' #domain @ -} clearCookieDomain :: MonadIO m => Cookie -> m () clearCookieDomain s = liftIO $ withManagedPtr s $ \ptr -> do poke (ptr `plusPtr` 16) (FP.nullPtr :: CString) #if ENABLE_OVERLOADING 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" type AttrOrigin CookieDomainFieldInfo = Cookie attrGet _ = getCookieDomain attrSet _ = setCookieDomain attrConstruct = undefined attrClear _ = clearCookieDomain cookie_domain :: AttrLabelProxy "domain" cookie_domain = AttrLabelProxy #endif {- | Get the value of the “@path@” field. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.get' cookie #path @ -} getCookiePath :: MonadIO m => Cookie -> m (Maybe T.Text) getCookiePath s = liftIO $ withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 24) :: IO CString result <- SP.convertIfNonNull val $ \val' -> do val'' <- cstringToText val' return val'' return result {- | Set the value of the “@path@” field. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.set' cookie [ #path 'Data.GI.Base.Attributes.:=' value ] @ -} setCookiePath :: MonadIO m => Cookie -> CString -> m () setCookiePath s val = liftIO $ withManagedPtr s $ \ptr -> do poke (ptr `plusPtr` 24) (val :: CString) {- | Set the value of the “@path@” field to `Nothing`. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.clear' #path @ -} clearCookiePath :: MonadIO m => Cookie -> m () clearCookiePath s = liftIO $ withManagedPtr s $ \ptr -> do poke (ptr `plusPtr` 24) (FP.nullPtr :: CString) #if ENABLE_OVERLOADING 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" type AttrOrigin CookiePathFieldInfo = Cookie attrGet _ = getCookiePath attrSet _ = setCookiePath attrConstruct = undefined attrClear _ = clearCookiePath cookie_path :: AttrLabelProxy "path" cookie_path = AttrLabelProxy #endif {- | Get the value of the “@expires@” field. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.get' cookie #expires @ -} getCookieExpires :: MonadIO m => Cookie -> m (Maybe Soup.Date.Date) getCookieExpires s = liftIO $ withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 32) :: IO (Ptr Soup.Date.Date) result <- SP.convertIfNonNull val $ \val' -> do val'' <- (newBoxed Soup.Date.Date) val' return val'' return result {- | Set the value of the “@expires@” field. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.set' cookie [ #expires 'Data.GI.Base.Attributes.:=' value ] @ -} setCookieExpires :: MonadIO m => Cookie -> Ptr Soup.Date.Date -> m () setCookieExpires s val = liftIO $ withManagedPtr s $ \ptr -> do poke (ptr `plusPtr` 32) (val :: Ptr Soup.Date.Date) {- | Set the value of the “@expires@” field to `Nothing`. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.clear' #expires @ -} clearCookieExpires :: MonadIO m => Cookie -> m () clearCookieExpires s = liftIO $ withManagedPtr s $ \ptr -> do poke (ptr `plusPtr` 32) (FP.nullPtr :: Ptr Soup.Date.Date) #if ENABLE_OVERLOADING data CookieExpiresFieldInfo instance AttrInfo CookieExpiresFieldInfo where type AttrAllowedOps CookieExpiresFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear] type AttrSetTypeConstraint CookieExpiresFieldInfo = (~) (Ptr Soup.Date.Date) type AttrBaseTypeConstraint CookieExpiresFieldInfo = (~) Cookie type AttrGetType CookieExpiresFieldInfo = Maybe Soup.Date.Date type AttrLabel CookieExpiresFieldInfo = "expires" type AttrOrigin CookieExpiresFieldInfo = Cookie attrGet _ = getCookieExpires attrSet _ = setCookieExpires attrConstruct = undefined attrClear _ = clearCookieExpires cookie_expires :: AttrLabelProxy "expires" cookie_expires = AttrLabelProxy #endif {- | Get the value of the “@secure@” field. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.get' cookie #secure @ -} getCookieSecure :: MonadIO m => Cookie -> m Bool getCookieSecure s = liftIO $ withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 40) :: IO CInt let val' = (/= 0) val return val' {- | Set the value of the “@secure@” field. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.set' cookie [ #secure 'Data.GI.Base.Attributes.:=' value ] @ -} setCookieSecure :: MonadIO m => Cookie -> Bool -> m () setCookieSecure s val = liftIO $ withManagedPtr s $ \ptr -> do let val' = (fromIntegral . fromEnum) val poke (ptr `plusPtr` 40) (val' :: CInt) #if ENABLE_OVERLOADING 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" type AttrOrigin CookieSecureFieldInfo = Cookie attrGet _ = getCookieSecure attrSet _ = setCookieSecure attrConstruct = undefined attrClear _ = undefined cookie_secure :: AttrLabelProxy "secure" cookie_secure = AttrLabelProxy #endif {- | Get the value of the “@http_only@” field. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.get' cookie #httpOnly @ -} getCookieHttpOnly :: MonadIO m => Cookie -> m Bool getCookieHttpOnly s = liftIO $ withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 44) :: IO CInt let val' = (/= 0) val return val' {- | Set the value of the “@http_only@” field. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.set' cookie [ #httpOnly 'Data.GI.Base.Attributes.:=' value ] @ -} setCookieHttpOnly :: MonadIO m => Cookie -> Bool -> m () setCookieHttpOnly s val = liftIO $ withManagedPtr s $ \ptr -> do let val' = (fromIntegral . fromEnum) val poke (ptr `plusPtr` 44) (val' :: CInt) #if ENABLE_OVERLOADING 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" type AttrOrigin CookieHttpOnlyFieldInfo = Cookie attrGet _ = getCookieHttpOnly attrSet _ = setCookieHttpOnly attrConstruct = undefined attrClear _ = undefined cookie_httpOnly :: AttrLabelProxy "httpOnly" cookie_httpOnly = AttrLabelProxy #endif #if ENABLE_OVERLOADING instance O.HasAttributeList Cookie type instance O.AttributeList Cookie = CookieAttributeList type CookieAttributeList = ('[ '("name", CookieNameFieldInfo), '("value", CookieValueFieldInfo), '("domain", CookieDomainFieldInfo), '("path", CookiePathFieldInfo), '("expires", CookieExpiresFieldInfo), '("secure", CookieSecureFieldInfo), '("httpOnly", CookieHttpOnlyFieldInfo)] :: [(Symbol, *)]) #endif -- method Cookie::new -- method type : Constructor -- Args : [Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "cookie name", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "value", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "cookie value", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "domain", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "cookie domain or hostname", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "path", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "cookie path, or %NULL", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "max_age", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "max age of the cookie, or -1 for a session cookie", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Soup", name = "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) {- | Creates a new 'GI.Soup.Structs.Cookie.Cookie' with the given attributes. (Use 'GI.Soup.Structs.Cookie.cookieSetSecure' and 'GI.Soup.Structs.Cookie.cookieSetHttpOnly' if you need to set those attributes on the returned cookie.) 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. /@maxAge@/ is used to set the \"expires\" attribute on the cookie; pass -1 to not include the attribute (indicating that the cookie expires with the current session), 0 for an already-expired cookie, or a lifetime in seconds. You can use the constants 'GI.Soup.Constants.COOKIE_MAX_AGE_ONE_HOUR', 'GI.Soup.Constants.COOKIE_MAX_AGE_ONE_DAY', 'GI.Soup.Constants.COOKIE_MAX_AGE_ONE_WEEK' and 'GI.Soup.Constants.COOKIE_MAX_AGE_ONE_YEAR' (or multiples thereof) to calculate this value. (If you really care about setting the exact time that the cookie will expire, use 'GI.Soup.Structs.Cookie.cookieSetExpires'.) /Since: 2.24/ -} cookieNew :: (B.CallStack.HasCallStack, MonadIO m) => T.Text {- ^ /@name@/: cookie name -} -> T.Text {- ^ /@value@/: cookie value -} -> T.Text {- ^ /@domain@/: cookie domain or hostname -} -> T.Text {- ^ /@path@/: cookie path, or 'Nothing' -} -> Int32 {- ^ /@maxAge@/: max age of the cookie, or -1 for a session cookie -} -> m Cookie {- ^ __Returns:__ a new 'GI.Soup.Structs.Cookie.Cookie'. -} 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 "cookieNew" result result' <- (wrapBoxed Cookie) result freeMem name' freeMem value' freeMem domain' freeMem path' return result' #if ENABLE_OVERLOADING #endif -- method Cookie::applies_to_uri -- method type : OrdinaryMethod -- Args : [Arg {argCName = "cookie", argType = TInterface (Name {namespace = "Soup", name = "Cookie"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #SoupCookie", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "uri", argType = TInterface (Name {namespace = "Soup", name = "URI"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #SoupURI", sinceVersion = Nothing}, 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 -> -- cookie : TInterface (Name {namespace = "Soup", name = "Cookie"}) Ptr Soup.URI.URI -> -- uri : TInterface (Name {namespace = "Soup", name = "URI"}) IO CInt {- | Tests if /@cookie@/ should be sent to /@uri@/. (At the moment, this does not check that /@cookie@/\'s domain matches /@uri@/, because it assumes that the caller has already done that. But don\'t rely on that; it may change in the future.) /Since: 2.24/ -} cookieAppliesToUri :: (B.CallStack.HasCallStack, MonadIO m) => Cookie {- ^ /@cookie@/: a 'GI.Soup.Structs.Cookie.Cookie' -} -> Soup.URI.URI {- ^ /@uri@/: a 'GI.Soup.Structs.URI.URI' -} -> m Bool {- ^ __Returns:__ 'True' if /@cookie@/ should be sent to /@uri@/, 'False' if not -} cookieAppliesToUri cookie uri = liftIO $ do cookie' <- unsafeManagedPtrGetPtr cookie uri' <- unsafeManagedPtrGetPtr uri result <- soup_cookie_applies_to_uri cookie' uri' let result' = (/= 0) result touchManagedPtr cookie touchManagedPtr uri return result' #if ENABLE_OVERLOADING data CookieAppliesToUriMethodInfo instance (signature ~ (Soup.URI.URI -> m Bool), MonadIO m) => O.MethodInfo CookieAppliesToUriMethodInfo Cookie signature where overloadedMethod _ = cookieAppliesToUri #endif -- method Cookie::copy -- method type : OrdinaryMethod -- Args : [Arg {argCName = "cookie", argType = TInterface (Name {namespace = "Soup", name = "Cookie"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #SoupCookie", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Soup", name = "Cookie"})) -- throws : False -- Skip return : False foreign import ccall "soup_cookie_copy" soup_cookie_copy :: Ptr Cookie -> -- cookie : TInterface (Name {namespace = "Soup", name = "Cookie"}) IO (Ptr Cookie) {- | Copies /@cookie@/. /Since: 2.24/ -} cookieCopy :: (B.CallStack.HasCallStack, MonadIO m) => Cookie {- ^ /@cookie@/: a 'GI.Soup.Structs.Cookie.Cookie' -} -> m Cookie {- ^ __Returns:__ a copy of /@cookie@/ -} cookieCopy cookie = liftIO $ do cookie' <- unsafeManagedPtrGetPtr cookie result <- soup_cookie_copy cookie' checkUnexpectedReturnNULL "cookieCopy" result result' <- (wrapBoxed Cookie) result touchManagedPtr cookie return result' #if ENABLE_OVERLOADING data CookieCopyMethodInfo instance (signature ~ (m Cookie), MonadIO m) => O.MethodInfo CookieCopyMethodInfo Cookie signature where overloadedMethod _ = cookieCopy #endif -- method Cookie::domain_matches -- method type : OrdinaryMethod -- Args : [Arg {argCName = "cookie", argType = TInterface (Name {namespace = "Soup", name = "Cookie"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #SoupCookie", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "host", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a URI", sinceVersion = Nothing}, 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 -> -- cookie : TInterface (Name {namespace = "Soup", name = "Cookie"}) CString -> -- host : TBasicType TUTF8 IO CInt {- | Checks if the /@cookie@/\'s domain and /@host@/ match in the sense that /@cookie@/ should be sent when making a request to /@host@/, or that /@cookie@/ should be accepted when receiving a response from /@host@/. /Since: 2.30/ -} cookieDomainMatches :: (B.CallStack.HasCallStack, MonadIO m) => Cookie {- ^ /@cookie@/: a 'GI.Soup.Structs.Cookie.Cookie' -} -> T.Text {- ^ /@host@/: a URI -} -> m Bool {- ^ __Returns:__ 'True' if the domains match, 'False' otherwise -} cookieDomainMatches cookie host = liftIO $ do cookie' <- unsafeManagedPtrGetPtr cookie host' <- textToCString host result <- soup_cookie_domain_matches cookie' host' let result' = (/= 0) result touchManagedPtr cookie freeMem host' return result' #if ENABLE_OVERLOADING data CookieDomainMatchesMethodInfo instance (signature ~ (T.Text -> m Bool), MonadIO m) => O.MethodInfo CookieDomainMatchesMethodInfo Cookie signature where overloadedMethod _ = cookieDomainMatches #endif -- method Cookie::equal -- method type : OrdinaryMethod -- Args : [Arg {argCName = "cookie1", argType = TInterface (Name {namespace = "Soup", name = "Cookie"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #SoupCookie", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cookie2", argType = TInterface (Name {namespace = "Soup", name = "Cookie"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #SoupCookie", sinceVersion = Nothing}, 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 -> -- cookie1 : TInterface (Name {namespace = "Soup", name = "Cookie"}) Ptr Cookie -> -- cookie2 : TInterface (Name {namespace = "Soup", name = "Cookie"}) IO CInt {- | Tests if /@cookie1@/ and /@cookie2@/ are equal. Note that currently, this does not check that the cookie domains match. This may change in the future. /Since: 2.24/ -} cookieEqual :: (B.CallStack.HasCallStack, MonadIO m) => Cookie {- ^ /@cookie1@/: a 'GI.Soup.Structs.Cookie.Cookie' -} -> Cookie {- ^ /@cookie2@/: a 'GI.Soup.Structs.Cookie.Cookie' -} -> m Bool {- ^ __Returns:__ whether the cookies are equal. -} cookieEqual cookie1 cookie2 = liftIO $ do cookie1' <- unsafeManagedPtrGetPtr cookie1 cookie2' <- unsafeManagedPtrGetPtr cookie2 result <- soup_cookie_equal cookie1' cookie2' let result' = (/= 0) result touchManagedPtr cookie1 touchManagedPtr cookie2 return result' #if ENABLE_OVERLOADING data CookieEqualMethodInfo instance (signature ~ (Cookie -> m Bool), MonadIO m) => O.MethodInfo CookieEqualMethodInfo Cookie signature where overloadedMethod _ = cookieEqual #endif -- method Cookie::free -- method type : OrdinaryMethod -- Args : [Arg {argCName = "cookie", argType = TInterface (Name {namespace = "Soup", name = "Cookie"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #SoupCookie", sinceVersion = Nothing}, 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 -> -- cookie : TInterface (Name {namespace = "Soup", name = "Cookie"}) IO () {- | Frees /@cookie@/ /Since: 2.24/ -} cookieFree :: (B.CallStack.HasCallStack, MonadIO m) => Cookie {- ^ /@cookie@/: a 'GI.Soup.Structs.Cookie.Cookie' -} -> m () cookieFree cookie = liftIO $ do cookie' <- unsafeManagedPtrGetPtr cookie soup_cookie_free cookie' touchManagedPtr cookie return () #if ENABLE_OVERLOADING data CookieFreeMethodInfo instance (signature ~ (m ()), MonadIO m) => O.MethodInfo CookieFreeMethodInfo Cookie signature where overloadedMethod _ = cookieFree #endif -- method Cookie::get_domain -- method type : OrdinaryMethod -- Args : [Arg {argCName = "cookie", argType = TInterface (Name {namespace = "Soup", name = "Cookie"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #SoupCookie", sinceVersion = Nothing}, 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 -> -- cookie : TInterface (Name {namespace = "Soup", name = "Cookie"}) IO CString {- | Gets /@cookie@/\'s domain /Since: 2.32/ -} cookieGetDomain :: (B.CallStack.HasCallStack, MonadIO m) => Cookie {- ^ /@cookie@/: a 'GI.Soup.Structs.Cookie.Cookie' -} -> m T.Text {- ^ __Returns:__ /@cookie@/\'s domain -} cookieGetDomain cookie = liftIO $ do cookie' <- unsafeManagedPtrGetPtr cookie result <- soup_cookie_get_domain cookie' checkUnexpectedReturnNULL "cookieGetDomain" result result' <- cstringToText result touchManagedPtr cookie return result' #if ENABLE_OVERLOADING data CookieGetDomainMethodInfo instance (signature ~ (m T.Text), MonadIO m) => O.MethodInfo CookieGetDomainMethodInfo Cookie signature where overloadedMethod _ = cookieGetDomain #endif -- method Cookie::get_expires -- method type : OrdinaryMethod -- Args : [Arg {argCName = "cookie", argType = TInterface (Name {namespace = "Soup", name = "Cookie"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #SoupCookie", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Soup", name = "Date"})) -- throws : False -- Skip return : False foreign import ccall "soup_cookie_get_expires" soup_cookie_get_expires :: Ptr Cookie -> -- cookie : TInterface (Name {namespace = "Soup", name = "Cookie"}) IO (Ptr Soup.Date.Date) {- | Gets /@cookie@/\'s expiration time. /Since: 2.32/ -} cookieGetExpires :: (B.CallStack.HasCallStack, MonadIO m) => Cookie {- ^ /@cookie@/: a 'GI.Soup.Structs.Cookie.Cookie' -} -> m (Maybe Soup.Date.Date) {- ^ __Returns:__ /@cookie@/\'s expiration time, which is owned by /@cookie@/ and should not be modified or freed. -} cookieGetExpires cookie = liftIO $ do cookie' <- unsafeManagedPtrGetPtr cookie result <- soup_cookie_get_expires cookie' maybeResult <- convertIfNonNull result $ \result' -> do result'' <- (newBoxed Soup.Date.Date) result' return result'' touchManagedPtr cookie return maybeResult #if ENABLE_OVERLOADING data CookieGetExpiresMethodInfo instance (signature ~ (m (Maybe Soup.Date.Date)), MonadIO m) => O.MethodInfo CookieGetExpiresMethodInfo Cookie signature where overloadedMethod _ = cookieGetExpires #endif -- method Cookie::get_http_only -- method type : OrdinaryMethod -- Args : [Arg {argCName = "cookie", argType = TInterface (Name {namespace = "Soup", name = "Cookie"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #SoupCookie", sinceVersion = Nothing}, 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 -> -- cookie : TInterface (Name {namespace = "Soup", name = "Cookie"}) IO CInt {- | Gets /@cookie@/\'s HttpOnly attribute /Since: 2.32/ -} cookieGetHttpOnly :: (B.CallStack.HasCallStack, MonadIO m) => Cookie {- ^ /@cookie@/: a 'GI.Soup.Structs.Cookie.Cookie' -} -> m Bool {- ^ __Returns:__ /@cookie@/\'s HttpOnly attribute -} cookieGetHttpOnly cookie = liftIO $ do cookie' <- unsafeManagedPtrGetPtr cookie result <- soup_cookie_get_http_only cookie' let result' = (/= 0) result touchManagedPtr cookie return result' #if ENABLE_OVERLOADING data CookieGetHttpOnlyMethodInfo instance (signature ~ (m Bool), MonadIO m) => O.MethodInfo CookieGetHttpOnlyMethodInfo Cookie signature where overloadedMethod _ = cookieGetHttpOnly #endif -- method Cookie::get_name -- method type : OrdinaryMethod -- Args : [Arg {argCName = "cookie", argType = TInterface (Name {namespace = "Soup", name = "Cookie"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #SoupCookie", sinceVersion = Nothing}, 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 -> -- cookie : TInterface (Name {namespace = "Soup", name = "Cookie"}) IO CString {- | Gets /@cookie@/\'s name /Since: 2.32/ -} cookieGetName :: (B.CallStack.HasCallStack, MonadIO m) => Cookie {- ^ /@cookie@/: a 'GI.Soup.Structs.Cookie.Cookie' -} -> m T.Text {- ^ __Returns:__ /@cookie@/\'s name -} cookieGetName cookie = liftIO $ do cookie' <- unsafeManagedPtrGetPtr cookie result <- soup_cookie_get_name cookie' checkUnexpectedReturnNULL "cookieGetName" result result' <- cstringToText result touchManagedPtr cookie return result' #if ENABLE_OVERLOADING data CookieGetNameMethodInfo instance (signature ~ (m T.Text), MonadIO m) => O.MethodInfo CookieGetNameMethodInfo Cookie signature where overloadedMethod _ = cookieGetName #endif -- method Cookie::get_path -- method type : OrdinaryMethod -- Args : [Arg {argCName = "cookie", argType = TInterface (Name {namespace = "Soup", name = "Cookie"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #SoupCookie", sinceVersion = Nothing}, 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 -> -- cookie : TInterface (Name {namespace = "Soup", name = "Cookie"}) IO CString {- | Gets /@cookie@/\'s path /Since: 2.32/ -} cookieGetPath :: (B.CallStack.HasCallStack, MonadIO m) => Cookie {- ^ /@cookie@/: a 'GI.Soup.Structs.Cookie.Cookie' -} -> m T.Text {- ^ __Returns:__ /@cookie@/\'s path -} cookieGetPath cookie = liftIO $ do cookie' <- unsafeManagedPtrGetPtr cookie result <- soup_cookie_get_path cookie' checkUnexpectedReturnNULL "cookieGetPath" result result' <- cstringToText result touchManagedPtr cookie return result' #if ENABLE_OVERLOADING data CookieGetPathMethodInfo instance (signature ~ (m T.Text), MonadIO m) => O.MethodInfo CookieGetPathMethodInfo Cookie signature where overloadedMethod _ = cookieGetPath #endif -- method Cookie::get_secure -- method type : OrdinaryMethod -- Args : [Arg {argCName = "cookie", argType = TInterface (Name {namespace = "Soup", name = "Cookie"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #SoupCookie", sinceVersion = Nothing}, 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 -> -- cookie : TInterface (Name {namespace = "Soup", name = "Cookie"}) IO CInt {- | Gets /@cookie@/\'s secure attribute /Since: 2.32/ -} cookieGetSecure :: (B.CallStack.HasCallStack, MonadIO m) => Cookie {- ^ /@cookie@/: a 'GI.Soup.Structs.Cookie.Cookie' -} -> m Bool {- ^ __Returns:__ /@cookie@/\'s secure attribute -} cookieGetSecure cookie = liftIO $ do cookie' <- unsafeManagedPtrGetPtr cookie result <- soup_cookie_get_secure cookie' let result' = (/= 0) result touchManagedPtr cookie return result' #if ENABLE_OVERLOADING data CookieGetSecureMethodInfo instance (signature ~ (m Bool), MonadIO m) => O.MethodInfo CookieGetSecureMethodInfo Cookie signature where overloadedMethod _ = cookieGetSecure #endif -- method Cookie::get_value -- method type : OrdinaryMethod -- Args : [Arg {argCName = "cookie", argType = TInterface (Name {namespace = "Soup", name = "Cookie"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #SoupCookie", sinceVersion = Nothing}, 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 -> -- cookie : TInterface (Name {namespace = "Soup", name = "Cookie"}) IO CString {- | Gets /@cookie@/\'s value /Since: 2.32/ -} cookieGetValue :: (B.CallStack.HasCallStack, MonadIO m) => Cookie {- ^ /@cookie@/: a 'GI.Soup.Structs.Cookie.Cookie' -} -> m T.Text {- ^ __Returns:__ /@cookie@/\'s value -} cookieGetValue cookie = liftIO $ do cookie' <- unsafeManagedPtrGetPtr cookie result <- soup_cookie_get_value cookie' checkUnexpectedReturnNULL "cookieGetValue" result result' <- cstringToText result touchManagedPtr cookie return result' #if ENABLE_OVERLOADING data CookieGetValueMethodInfo instance (signature ~ (m T.Text), MonadIO m) => O.MethodInfo CookieGetValueMethodInfo Cookie signature where overloadedMethod _ = cookieGetValue #endif -- method Cookie::set_domain -- method type : OrdinaryMethod -- Args : [Arg {argCName = "cookie", argType = TInterface (Name {namespace = "Soup", name = "Cookie"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #SoupCookie", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "domain", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the new domain", sinceVersion = Nothing}, 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 -> -- cookie : TInterface (Name {namespace = "Soup", name = "Cookie"}) CString -> -- domain : TBasicType TUTF8 IO () {- | Sets /@cookie@/\'s domain to /@domain@/ /Since: 2.24/ -} cookieSetDomain :: (B.CallStack.HasCallStack, MonadIO m) => Cookie {- ^ /@cookie@/: a 'GI.Soup.Structs.Cookie.Cookie' -} -> T.Text {- ^ /@domain@/: the new domain -} -> m () cookieSetDomain cookie domain = liftIO $ do cookie' <- unsafeManagedPtrGetPtr cookie domain' <- textToCString domain soup_cookie_set_domain cookie' domain' touchManagedPtr cookie freeMem domain' return () #if ENABLE_OVERLOADING data CookieSetDomainMethodInfo instance (signature ~ (T.Text -> m ()), MonadIO m) => O.MethodInfo CookieSetDomainMethodInfo Cookie signature where overloadedMethod _ = cookieSetDomain #endif -- method Cookie::set_expires -- method type : OrdinaryMethod -- Args : [Arg {argCName = "cookie", argType = TInterface (Name {namespace = "Soup", name = "Cookie"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #SoupCookie", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "expires", argType = TInterface (Name {namespace = "Soup", name = "Date"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the new expiration time, or %NULL", sinceVersion = Nothing}, 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 -> -- cookie : TInterface (Name {namespace = "Soup", name = "Cookie"}) Ptr Soup.Date.Date -> -- expires : TInterface (Name {namespace = "Soup", name = "Date"}) IO () {- | Sets /@cookie@/\'s expiration time to /@expires@/. If /@expires@/ is 'Nothing', /@cookie@/ will be a session cookie and will expire at the end of the client\'s session. (This sets the same property as 'GI.Soup.Structs.Cookie.cookieSetMaxAge'.) /Since: 2.24/ -} cookieSetExpires :: (B.CallStack.HasCallStack, MonadIO m) => Cookie {- ^ /@cookie@/: a 'GI.Soup.Structs.Cookie.Cookie' -} -> Soup.Date.Date {- ^ /@expires@/: the new expiration time, or 'Nothing' -} -> m () cookieSetExpires cookie expires = liftIO $ do cookie' <- unsafeManagedPtrGetPtr cookie expires' <- unsafeManagedPtrGetPtr expires soup_cookie_set_expires cookie' expires' touchManagedPtr cookie touchManagedPtr expires return () #if ENABLE_OVERLOADING data CookieSetExpiresMethodInfo instance (signature ~ (Soup.Date.Date -> m ()), MonadIO m) => O.MethodInfo CookieSetExpiresMethodInfo Cookie signature where overloadedMethod _ = cookieSetExpires #endif -- method Cookie::set_http_only -- method type : OrdinaryMethod -- Args : [Arg {argCName = "cookie", argType = TInterface (Name {namespace = "Soup", name = "Cookie"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #SoupCookie", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "http_only", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the new value for the HttpOnly attribute", sinceVersion = Nothing}, 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 -> -- cookie : TInterface (Name {namespace = "Soup", name = "Cookie"}) CInt -> -- http_only : TBasicType TBoolean IO () {- | Sets /@cookie@/\'s HttpOnly attribute to /@httpOnly@/. If 'True', /@cookie@/ will be marked as \"http only\", meaning it should not be exposed to web page scripts or other untrusted code. /Since: 2.24/ -} cookieSetHttpOnly :: (B.CallStack.HasCallStack, MonadIO m) => Cookie {- ^ /@cookie@/: a 'GI.Soup.Structs.Cookie.Cookie' -} -> Bool {- ^ /@httpOnly@/: the new value for the HttpOnly attribute -} -> m () cookieSetHttpOnly cookie httpOnly = liftIO $ do cookie' <- unsafeManagedPtrGetPtr cookie let httpOnly' = (fromIntegral . fromEnum) httpOnly soup_cookie_set_http_only cookie' httpOnly' touchManagedPtr cookie return () #if ENABLE_OVERLOADING data CookieSetHttpOnlyMethodInfo instance (signature ~ (Bool -> m ()), MonadIO m) => O.MethodInfo CookieSetHttpOnlyMethodInfo Cookie signature where overloadedMethod _ = cookieSetHttpOnly #endif -- method Cookie::set_max_age -- method type : OrdinaryMethod -- Args : [Arg {argCName = "cookie", argType = TInterface (Name {namespace = "Soup", name = "Cookie"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #SoupCookie", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "max_age", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the new max age", sinceVersion = Nothing}, 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 -> -- cookie : TInterface (Name {namespace = "Soup", name = "Cookie"}) Int32 -> -- max_age : TBasicType TInt IO () {- | Sets /@cookie@/\'s max age to /@maxAge@/. If /@maxAge@/ is -1, the cookie is a session cookie, and will expire at the end of the client\'s session. Otherwise, it is the number of seconds until the cookie expires. You can use the constants 'GI.Soup.Constants.COOKIE_MAX_AGE_ONE_HOUR', 'GI.Soup.Constants.COOKIE_MAX_AGE_ONE_DAY', 'GI.Soup.Constants.COOKIE_MAX_AGE_ONE_WEEK' and 'GI.Soup.Constants.COOKIE_MAX_AGE_ONE_YEAR' (or multiples thereof) to calculate this value. (A value of 0 indicates that the cookie should be considered already-expired.) (This sets the same property as 'GI.Soup.Structs.Cookie.cookieSetExpires'.) /Since: 2.24/ -} cookieSetMaxAge :: (B.CallStack.HasCallStack, MonadIO m) => Cookie {- ^ /@cookie@/: a 'GI.Soup.Structs.Cookie.Cookie' -} -> Int32 {- ^ /@maxAge@/: the new max age -} -> m () cookieSetMaxAge cookie maxAge = liftIO $ do cookie' <- unsafeManagedPtrGetPtr cookie soup_cookie_set_max_age cookie' maxAge touchManagedPtr cookie return () #if ENABLE_OVERLOADING data CookieSetMaxAgeMethodInfo instance (signature ~ (Int32 -> m ()), MonadIO m) => O.MethodInfo CookieSetMaxAgeMethodInfo Cookie signature where overloadedMethod _ = cookieSetMaxAge #endif -- method Cookie::set_name -- method type : OrdinaryMethod -- Args : [Arg {argCName = "cookie", argType = TInterface (Name {namespace = "Soup", name = "Cookie"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #SoupCookie", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the new name", sinceVersion = Nothing}, 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 -> -- cookie : TInterface (Name {namespace = "Soup", name = "Cookie"}) CString -> -- name : TBasicType TUTF8 IO () {- | Sets /@cookie@/\'s name to /@name@/ /Since: 2.24/ -} cookieSetName :: (B.CallStack.HasCallStack, MonadIO m) => Cookie {- ^ /@cookie@/: a 'GI.Soup.Structs.Cookie.Cookie' -} -> T.Text {- ^ /@name@/: the new name -} -> m () cookieSetName cookie name = liftIO $ do cookie' <- unsafeManagedPtrGetPtr cookie name' <- textToCString name soup_cookie_set_name cookie' name' touchManagedPtr cookie freeMem name' return () #if ENABLE_OVERLOADING data CookieSetNameMethodInfo instance (signature ~ (T.Text -> m ()), MonadIO m) => O.MethodInfo CookieSetNameMethodInfo Cookie signature where overloadedMethod _ = cookieSetName #endif -- method Cookie::set_path -- method type : OrdinaryMethod -- Args : [Arg {argCName = "cookie", argType = TInterface (Name {namespace = "Soup", name = "Cookie"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #SoupCookie", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "path", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the new path", sinceVersion = Nothing}, 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 -> -- cookie : TInterface (Name {namespace = "Soup", name = "Cookie"}) CString -> -- path : TBasicType TUTF8 IO () {- | Sets /@cookie@/\'s path to /@path@/ /Since: 2.24/ -} cookieSetPath :: (B.CallStack.HasCallStack, MonadIO m) => Cookie {- ^ /@cookie@/: a 'GI.Soup.Structs.Cookie.Cookie' -} -> T.Text {- ^ /@path@/: the new path -} -> m () cookieSetPath cookie path = liftIO $ do cookie' <- unsafeManagedPtrGetPtr cookie path' <- textToCString path soup_cookie_set_path cookie' path' touchManagedPtr cookie freeMem path' return () #if ENABLE_OVERLOADING data CookieSetPathMethodInfo instance (signature ~ (T.Text -> m ()), MonadIO m) => O.MethodInfo CookieSetPathMethodInfo Cookie signature where overloadedMethod _ = cookieSetPath #endif -- method Cookie::set_secure -- method type : OrdinaryMethod -- Args : [Arg {argCName = "cookie", argType = TInterface (Name {namespace = "Soup", name = "Cookie"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #SoupCookie", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "secure", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the new value for the secure attribute", sinceVersion = Nothing}, 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 -> -- cookie : TInterface (Name {namespace = "Soup", name = "Cookie"}) CInt -> -- secure : TBasicType TBoolean IO () {- | Sets /@cookie@/\'s secure attribute to /@secure@/. If 'True', /@cookie@/ will only be transmitted from the client to the server over secure (https) connections. /Since: 2.24/ -} cookieSetSecure :: (B.CallStack.HasCallStack, MonadIO m) => Cookie {- ^ /@cookie@/: a 'GI.Soup.Structs.Cookie.Cookie' -} -> Bool {- ^ /@secure@/: the new value for the secure attribute -} -> m () cookieSetSecure cookie secure = liftIO $ do cookie' <- unsafeManagedPtrGetPtr cookie let secure' = (fromIntegral . fromEnum) secure soup_cookie_set_secure cookie' secure' touchManagedPtr cookie return () #if ENABLE_OVERLOADING data CookieSetSecureMethodInfo instance (signature ~ (Bool -> m ()), MonadIO m) => O.MethodInfo CookieSetSecureMethodInfo Cookie signature where overloadedMethod _ = cookieSetSecure #endif -- method Cookie::set_value -- method type : OrdinaryMethod -- Args : [Arg {argCName = "cookie", argType = TInterface (Name {namespace = "Soup", name = "Cookie"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #SoupCookie", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "value", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the new value", sinceVersion = Nothing}, 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 -> -- cookie : TInterface (Name {namespace = "Soup", name = "Cookie"}) CString -> -- value : TBasicType TUTF8 IO () {- | Sets /@cookie@/\'s value to /@value@/ /Since: 2.24/ -} cookieSetValue :: (B.CallStack.HasCallStack, MonadIO m) => Cookie {- ^ /@cookie@/: a 'GI.Soup.Structs.Cookie.Cookie' -} -> T.Text {- ^ /@value@/: the new value -} -> m () cookieSetValue cookie value = liftIO $ do cookie' <- unsafeManagedPtrGetPtr cookie value' <- textToCString value soup_cookie_set_value cookie' value' touchManagedPtr cookie freeMem value' return () #if ENABLE_OVERLOADING data CookieSetValueMethodInfo instance (signature ~ (T.Text -> m ()), MonadIO m) => O.MethodInfo CookieSetValueMethodInfo Cookie signature where overloadedMethod _ = cookieSetValue #endif -- method Cookie::to_cookie_header -- method type : OrdinaryMethod -- Args : [Arg {argCName = "cookie", argType = TInterface (Name {namespace = "Soup", name = "Cookie"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #SoupCookie", sinceVersion = Nothing}, 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 -> -- cookie : TInterface (Name {namespace = "Soup", name = "Cookie"}) IO CString {- | Serializes /@cookie@/ in the format used by the Cookie header (ie, for returning a cookie from a 'GI.Soup.Objects.Session.Session' to a server). /Since: 2.24/ -} cookieToCookieHeader :: (B.CallStack.HasCallStack, MonadIO m) => Cookie {- ^ /@cookie@/: a 'GI.Soup.Structs.Cookie.Cookie' -} -> m T.Text {- ^ __Returns:__ the header -} cookieToCookieHeader cookie = liftIO $ do cookie' <- unsafeManagedPtrGetPtr cookie result <- soup_cookie_to_cookie_header cookie' checkUnexpectedReturnNULL "cookieToCookieHeader" result result' <- cstringToText result freeMem result touchManagedPtr cookie return result' #if ENABLE_OVERLOADING data CookieToCookieHeaderMethodInfo instance (signature ~ (m T.Text), MonadIO m) => O.MethodInfo CookieToCookieHeaderMethodInfo Cookie signature where overloadedMethod _ = cookieToCookieHeader #endif -- method Cookie::to_set_cookie_header -- method type : OrdinaryMethod -- Args : [Arg {argCName = "cookie", argType = TInterface (Name {namespace = "Soup", name = "Cookie"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #SoupCookie", sinceVersion = Nothing}, 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 -> -- cookie : TInterface (Name {namespace = "Soup", name = "Cookie"}) IO CString {- | Serializes /@cookie@/ in the format used by the Set-Cookie header (ie, for sending a cookie from a 'GI.Soup.Objects.Server.Server' to a client). /Since: 2.24/ -} cookieToSetCookieHeader :: (B.CallStack.HasCallStack, MonadIO m) => Cookie {- ^ /@cookie@/: a 'GI.Soup.Structs.Cookie.Cookie' -} -> m T.Text {- ^ __Returns:__ the header -} cookieToSetCookieHeader cookie = liftIO $ do cookie' <- unsafeManagedPtrGetPtr cookie result <- soup_cookie_to_set_cookie_header cookie' checkUnexpectedReturnNULL "cookieToSetCookieHeader" result result' <- cstringToText result freeMem result touchManagedPtr cookie return result' #if ENABLE_OVERLOADING data CookieToSetCookieHeaderMethodInfo instance (signature ~ (m T.Text), MonadIO m) => O.MethodInfo CookieToSetCookieHeaderMethodInfo Cookie signature where overloadedMethod _ = cookieToSetCookieHeader #endif -- method Cookie::parse -- method type : MemberFunction -- Args : [Arg {argCName = "header", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a cookie string (eg, the value of a Set-Cookie header)", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "origin", argType = TInterface (Name {namespace = "Soup", name = "URI"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "origin of the cookie, or %NULL", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Soup", name = "Cookie"})) -- throws : False -- Skip return : False foreign import ccall "soup_cookie_parse" soup_cookie_parse :: CString -> -- header : TBasicType TUTF8 Ptr Soup.URI.URI -> -- origin : TInterface (Name {namespace = "Soup", name = "URI"}) IO (Ptr Cookie) {- | Parses /@header@/ and returns a 'GI.Soup.Structs.Cookie.Cookie'. (If /@header@/ contains multiple cookies, only the first one will be parsed.) If /@header@/ does not have \"path\" or \"domain\" attributes, they will be defaulted from /@origin@/. If /@origin@/ is 'Nothing', path will default to \"\/\", but domain will be left as 'Nothing'. Note that this is not a valid state for a 'GI.Soup.Structs.Cookie.Cookie', and you will need to fill in some appropriate string for the domain if you want to actually make use of the cookie. /Since: 2.24/ -} cookieParse :: (B.CallStack.HasCallStack, MonadIO m) => T.Text {- ^ /@header@/: a cookie string (eg, the value of a Set-Cookie header) -} -> Soup.URI.URI {- ^ /@origin@/: origin of the cookie, or 'Nothing' -} -> m (Maybe Cookie) {- ^ __Returns:__ a new 'GI.Soup.Structs.Cookie.Cookie', or 'Nothing' if it could not be parsed, or contained an illegal \"domain\" attribute for a cookie originating from /@origin@/. -} cookieParse header origin = liftIO $ do header' <- textToCString header 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 #if ENABLE_OVERLOADING #endif #if ENABLE_OVERLOADING 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 = O.MethodResolutionFailed l o instance (info ~ ResolveCookieMethod t Cookie, O.MethodInfo info Cookie p) => OL.IsLabel t (Cookie -> p) where #if MIN_VERSION_base(4,10,0) fromLabel = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info) #else fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info) #endif #endif