@@ -20,7 +20,7 @@ import Control.Monad (liftM)
2020import Data.Aeson
2121import Data.Aeson.TH (deriveJSON)
2222import qualified Data.ByteString.Lazy.Char8 as L
23−import Data.List (intersperse)
23+import Data.List (intercalate)
2424import Data.Maybe (fromMaybe)
2525import Data.Text (Text)
2626import Data.Time.Clock (UTCTime)
@@ -131,9 +131,7 @@ type Reply = Network.HTTP.Conduit.Response L.ByteString
131131type Method = NHTM.Method
132132
133133responseIsError :: Reply -> Bool
134−responseIsError resp = if (NHTS.statusCode (responseStatus resp)) > 299
135− then True
136− else False
134+responseIsError resp = NHTS.statusCode (responseStatus resp) > 299
137135
138136emptyBody = L.pack ""
139137
@@ -145,19 +143,18 @@ dispatch url method body = do
145143 let req = initReq { method = method
146144 , requestBody = reqBody
147145 , checkStatus = \_ _ _ -> Nothing}
148− response <- withManager $ httpLbs req
149− return response
146+ withManager $ httpLbs req
150147
151148type IndexName = String
152149
153150joinPath :: [String] -> String
154−joinPath path = concat $ intersperse "/" path
151+joinPath path = intercalate "/" path
155152
156153getStatus :: Server -> IO (Maybe (Status Version))
157154getStatus (Server server) = do
158155 request <- parseUrl $ joinPath [server]
159156 response <- withManager $ httpLbs request
160− return $ (decode $ responseBody response)
157+ return $ decode (responseBody response)
161158
162159createIndex :: Server -> IndexSettings -> IndexName -> IO Reply
163160createIndex (Server server) indexSettings indexName =
@@ -174,16 +171,17 @@ deleteIndex (Server server) indexName =
174171 body = Nothing
175172
176173respIsTwoHunna :: Reply -> Bool
177−respIsTwoHunna resp = (NHTS.statusCode $ responseStatus resp) == 200
174+respIsTwoHunna resp = NHTS.statusCode (responseStatus resp) == 200
175+
176+existentialQuery url = do
177+ reply <- dispatch url NHTM.methodHead Nothing
178+ return (reply, respIsTwoHunna reply)
178179
179180indexExists :: Server -> IndexName -> IO Bool
180−indexExists (Server server) indexName =
181− exists where
181+indexExists (Server server) indexName = do
182+ (reply, exists) <- existentialQuery url
183+ return exists where
182184 url = joinPath [server, indexName]
183− method = NHTM.methodHead
184− body = Nothing
185− reply = dispatch url method body
186− exists = fmap respIsTwoHunna reply
187185
188186data OpenCloseIndex = OpenIndex | CloseIndex deriving (Show)
189187
@@ -267,13 +265,10 @@ getDocument (Server server) indexName mappingName docId =
267265
268266documentExists :: Server -> IndexName -> MappingName
269267 -> DocumentID -> IO Bool
270−documentExists (Server server) indexName mappingName docId =
271− exists where
268+documentExists (Server server) indexName mappingName docId = do
269+ (reply, exists) <- existentialQuery url
270+ return exists where
272271 url = joinPath [server, indexName, mappingName, docId]
273− method = NHTM.methodHead
274− body = Nothing
275− reply = dispatch url method body
276− exists = fmap respIsTwoHunna reply
277272
278273-- getStatus :: String -> IO (Maybe (Status Version))
279274-- getStatus server = do