]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.rest/scl/HTTP/Client.scl
76b0b63c4a59534ae58cded7adb27c47bc541a71
[simantics/platform.git] / bundles / org.simantics.scl.rest / scl / HTTP / Client.scl
1 import "Map" as Map
2 import "Vector"
3 import "Logging" as LOGGER
4
5 importJava "javax.ws.rs.client.Invocation" where
6     data Invocation
7
8     @JavaName invoke
9     invoke_ :: Invocation -> Class a -> <Proc, Exception> a
10
11 invoke :: VecComp a => Invocation -> <Proc, Exception> a
12 invoke invocation = invoke_ invocation classObject
13
14 importJava "javax.ws.rs.client.Invocation$Builder" where
15     data Builder
16     
17     header :: Builder -> String -> String -> <Proc> Builder
18     accept :: Builder -> Vector String -> <Proc> Builder
19     cookie :: Builder -> String -> String -> <Proc> Builder
20     build :: Builder -> String -> <Proc> Invocation
21
22 importJava "javax.ws.rs.client.WebTarget" where
23     data WebTarget
24
25     path :: WebTarget -> String -> <Proc> WebTarget
26     queryParam :: WebTarget -> String -> Vector String -> <Proc> WebTarget
27     request :: WebTarget -> Vector String -> <Proc> Builder
28
29 importJava "javax.ws.rs.client.ClientBuilder" where
30     data ClientBuilder
31     
32     @JavaName newBuilder
33     clientBuilder :: <Proc> ClientBuilder
34     
35     @JavaName build
36     buildClient :: ClientBuilder -> Client
37
38 importJava "javax.ws.rs.client.Client" where
39     data Client
40
41     target :: Client -> String -> <Proc> WebTarget
42     close :: Client -> <Proc> ()
43
44 getTextHtmlExample :: String -> Map.T String a -> <Proc, Exception> String
45 getTextHtmlExample uri queryParams = do
46     httpClient = buildClient clientBuilder
47     webTarget = target httpClient uri
48     req = request webTarget (vector ["text/html"])
49     invocation = build req "GET"
50     res = invoke invocation
51     close httpClient
52     res
53