|
|
|
@ -95,6 +95,7 @@ import qualified Data.ByteString as BS |
|
|
|
import Data.Char (isSpace) |
|
|
|
import Data.Char (isSpace) |
|
|
|
import Data.Conduit |
|
|
|
import Data.Conduit |
|
|
|
import Data.Default |
|
|
|
import Data.Default |
|
|
|
|
|
|
|
import Data.Semigroup as Sem |
|
|
|
import qualified Data.Set as Set |
|
|
|
import qualified Data.Set as Set |
|
|
|
import Data.String (IsString, fromString) |
|
|
|
import Data.String (IsString, fromString) |
|
|
|
import Data.Text (Text) |
|
|
|
import Data.Text (Text) |
|
|
|
@ -735,16 +736,8 @@ data StreamFeatures = StreamFeatures |
|
|
|
-- TODO: All feature elements instead? |
|
|
|
-- TODO: All feature elements instead? |
|
|
|
} deriving (Eq, Show) |
|
|
|
} deriving (Eq, Show) |
|
|
|
|
|
|
|
|
|
|
|
instance Monoid StreamFeatures where |
|
|
|
instance Sem.Semigroup StreamFeatures where |
|
|
|
mempty = StreamFeatures |
|
|
|
sf1 <> sf2 = |
|
|
|
{ streamFeaturesTls = Nothing |
|
|
|
|
|
|
|
, streamFeaturesMechanisms = [] |
|
|
|
|
|
|
|
, streamFeaturesRosterVer = Nothing |
|
|
|
|
|
|
|
, streamFeaturesPreApproval = False |
|
|
|
|
|
|
|
, streamFeaturesSession = Nothing |
|
|
|
|
|
|
|
, streamFeaturesOther = [] |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
mappend sf1 sf2 = |
|
|
|
|
|
|
|
StreamFeatures |
|
|
|
StreamFeatures |
|
|
|
{ streamFeaturesTls = mplusOn streamFeaturesTls |
|
|
|
{ streamFeaturesTls = mplusOn streamFeaturesTls |
|
|
|
, streamFeaturesMechanisms = mplusOn streamFeaturesMechanisms |
|
|
|
, streamFeaturesMechanisms = mplusOn streamFeaturesMechanisms |
|
|
|
@ -759,6 +752,17 @@ instance Monoid StreamFeatures where |
|
|
|
where |
|
|
|
where |
|
|
|
mplusOn f = f sf1 `mplus` f sf2 |
|
|
|
mplusOn f = f sf1 `mplus` f sf2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
instance Monoid StreamFeatures where |
|
|
|
|
|
|
|
mempty = StreamFeatures |
|
|
|
|
|
|
|
{ streamFeaturesTls = Nothing |
|
|
|
|
|
|
|
, streamFeaturesMechanisms = [] |
|
|
|
|
|
|
|
, streamFeaturesRosterVer = Nothing |
|
|
|
|
|
|
|
, streamFeaturesPreApproval = False |
|
|
|
|
|
|
|
, streamFeaturesSession = Nothing |
|
|
|
|
|
|
|
, streamFeaturesOther = [] |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
mappend = (<>) |
|
|
|
|
|
|
|
|
|
|
|
-- | Signals the state of the stream connection. |
|
|
|
-- | Signals the state of the stream connection. |
|
|
|
data ConnectionState |
|
|
|
data ConnectionState |
|
|
|
= Closed -- ^ Stream has not been established yet |
|
|
|
= Closed -- ^ Stream has not been established yet |
|
|
|
|