@@ -14,6 +14,7 @@ import qualified Data.Text.Encoding as TE
1414-- import qualified Data.Foldable as F
1515import qualified Data.List as L
1616import Data.Proxy
17+import qualified Data.Text as T
1718import qualified Data.Map as Map
1819-- import Data.Monoid
1920-- import Data.String
@@ -58,7 +59,15 @@ response (ResponseSuccess _ x) = Just x
5859response (ResponseFailure _ x) = Just x
5960response _ = Nothing
6061
61−data QueryPart t = QueryPartParam (Behavior t (Either String String))
62+
63+data QParam a = QParamSome a | QNone | QParamInvalid String
64+
65+qParamToQueryPart :: ToHttpApiData a => QParam a -> Either String (Maybe String)
66+qParamToQueryPart (QParamSome a) = Right (Just . T.unpack $ toQueryParam a)
67+qParamToQueryPart QNone = Right Nothing
68+qParamToQueryPart (QParamInvalid e) = Left e
69+
70+data QueryPart t = QueryPartParam (Behavior t (Either String (Maybe String)))
6271 | QueryPartParams (Behavior t [String])
6372 | QueryPartFlag (Behavior t Bool)
6473
@@ -117,8 +126,9 @@ performRequest reqMethod req reqHost trigger = do
117126 queryPartString :: (String, QueryPart t) -> Behavior t (Maybe (Either String String))
118127 queryPartString (pName, qp) = case qp of
119128 QueryPartParam p -> ffor p $ \case
120− Left e -> Just (Left e)
121− Right a -> Just (Right $ pName ++ "=" ++ a)
129+ Left e -> Just (Left e)
130+ Right (Just a) -> Just (Right $ pName ++ "=" ++ a)
131+ Right Nothing -> Nothing
122132 QueryPartParams ps -> ffor ps $ \pStrings ->
123133 if null pStrings
124134 then Nothing