]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.rest/scl/HTTP/Client.scl
HTTP/Client SCL module for HTTP requests
[simantics/platform.git] / bundles / org.simantics.scl.rest / scl / HTTP / Client.scl
diff --git a/bundles/org.simantics.scl.rest/scl/HTTP/Client.scl b/bundles/org.simantics.scl.rest/scl/HTTP/Client.scl
new file mode 100644 (file)
index 0000000..76b0b63
--- /dev/null
@@ -0,0 +1,53 @@
+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
+