+import "Map" as Map
+import "Vector"
+import "Logging" as LOGGER
+
+importJava "javax.ws.rs.client.Invocation" where
+ data Invocation
+
+ @JavaName invoke
+ invoke_ :: Invocation -> Class a -> <Proc, Exception> a
+
+invoke :: VecComp a => Invocation -> <Proc, Exception> a
+invoke invocation = invoke_ invocation classObject
+
+importJava "javax.ws.rs.client.Invocation$Builder" where
+ data Builder
+
+ header :: Builder -> String -> String -> <Proc> Builder
+ accept :: Builder -> Vector String -> <Proc> Builder
+ cookie :: Builder -> String -> String -> <Proc> Builder
+ build :: Builder -> String -> <Proc> Invocation
+
+importJava "javax.ws.rs.client.WebTarget" where
+ data WebTarget
+
+ path :: WebTarget -> String -> <Proc> WebTarget
+ queryParam :: WebTarget -> String -> Vector String -> <Proc> WebTarget
+ request :: WebTarget -> Vector String -> <Proc> Builder
+
+importJava "javax.ws.rs.client.ClientBuilder" where
+ data ClientBuilder
+
+ @JavaName newBuilder
+ clientBuilder :: <Proc> ClientBuilder
+
+ @JavaName build
+ buildClient :: ClientBuilder -> Client
+
+importJava "javax.ws.rs.client.Client" where
+ data Client
+
+ target :: Client -> String -> <Proc> WebTarget
+ close :: Client -> <Proc> ()
+
+getTextHtmlExample :: String -> Map.T String a -> <Proc, Exception> String
+getTextHtmlExample uri queryParams = do
+ httpClient = buildClient clientBuilder
+ webTarget = target httpClient uri
+ req = request webTarget (vector ["text/html"])
+ invocation = build req "GET"
+ res = invoke invocation
+ close httpClient
+ res
+