@@ -54,6 +54,7 @@ module Database.Bloodhound.Client
57+import qualified Blaze.ByteString.Builder as BB
57import Control.Applicative
58import Control.Applicative
58import Control.Monad
59import Control.Monad
59import Control.Monad.Catch
60import Control.Monad.Catch
@@ -72,6 +73,7 @@ import qualified Data.Vector as V
72import Network.HTTP.Client
73import Network.HTTP.Client
73import qualified Network.HTTP.Types.Method as NHTM
74import qualified Network.HTTP.Types.Method as NHTM
74import qualified Network.HTTP.Types.Status as NHTS
75import qualified Network.HTTP.Types.Status as NHTS
76+import qualified Network.HTTP.Types.URI as NHTU
75import Prelude hiding (filter, head)
77import Prelude hiding (filter, head)
76import URI.ByteString hiding (Query)
78import URI.ByteString hiding (Query)
@@ -168,11 +170,12 @@ joinPath ps = do
169-- | Severely dumbed down query renderer. Assumes your data doesn't
171-- | Severely dumbed down query renderer. Assumes your data doesn't
170-- need any encoding
172-- need any encoding
171−addQuery :: [(Text, Text)] -> Text -> Text
173+addQuery :: [(Text, Maybe Text)] -> Text -> Text
172−addQuery ps u = u <> "?" <> params
174+addQuery q u = u <> rendered
174− params = T.intercalate "&" (uncurry mkParam <$> ps)
176+ rendered =
175− mkParam k v = k <> "=" <> v
177+ T.decodeUtf8 $ BB.toByteString $ NHTU.renderQueryText prependQuestionMark q
178+ prependQuestionMark = True
178bindM2 :: (Applicative m, Monad m) => (a -> b -> m c) -> m a -> m b -> m c
181bindM2 :: (Applicative m, Monad m) => (a -> b -> m c) -> m a -> m b -> m c
@@ -346,7 +349,9 @@ indexDocument (IndexName indexName)
346 ExternalGTE (ExternalDocVersion v) -> versionParams v "external_gte"
349 ExternalGTE (ExternalDocVersion v) -> versionParams v "external_gte"
347 ForceVersion (ExternalDocVersion v) -> versionParams v "force"
350 ForceVersion (ExternalDocVersion v) -> versionParams v "force"
348 vt = T.pack . show . docVersionNumber
351 vt = T.pack . show . docVersionNumber
349− versionParams v t = [("version", vt v), ("version_type", t)]
352+ versionParams v t = [ ("version", Just $ vt v)
353+ , ("version_type", Just t)
350 body = Just (encode document)
355 body = Just (encode document)
352-- | 'deleteDocument' is the primary way to delete a single document.
357-- | 'deleteDocument' is the primary way to delete a single document.