0 | module Node.TLS.Connect
 1 |
 2 | import Node
 3 | import Data.Buffer
 4 | import Node.Internal.Support
 5 |
 6 | public export
 7 | record Options where
 8 |   constructor MkOptions
 9 |   enableTrace: Maybe Bool
10 |   host: Maybe String
11 |   port: Maybe Int
12 |   path: Maybe String
13 |   -- TODO: socket
14 |   allowHalfOpen: Bool
15 |   rejectUnauthorized: Bool
16 |   -- TODO: pskCallback
17 |   -- TODO: ALPNProtocols
18 |   servername: Maybe String
19 |   -- TODO: checkServerIdentity(servername, cert)
20 |   session: Maybe Buffer
21 |   minDHSize: Maybe Int
22 |   highWaterMark: Maybe Int
23 |   -- TODO: secureContext
24 |   -- TODO: onread
25 |
26 | export
27 | defaultOptions : Options
28 | defaultOptions = MkOptions
29 |   { enableTrace = Nothing
30 |   , host = Nothing
31 |   , port = Nothing
32 |   , path = Nothing
33 |   , allowHalfOpen = False
34 |   , rejectUnauthorized = True
35 |   , servername = Nothing
36 |   , session = Nothing
37 |   , minDHSize = Nothing
38 |   , highWaterMark = Nothing
39 |   }
40 |
41 | %foreign """
42 |   node:lambda:
43 |   ( enableTrace
44 |   , host
45 |   , port
46 |   , path
47 |   , allowHalfOpen
48 |   , rejectUnauthorized
49 |   , servername
50 |   , session
51 |   , minDHSize
52 |   , highWaterMark
53 |   ) => _keepDefined({
54 |     enableTrace: _maybe(enableTrace),
55 |     host: _maybe(host),
56 |     port: _maybe(port),
57 |     path: _maybe(path),
58 |     allowHalfOpen: _bool(allowHalfOpen),
59 |     rejectUnauthorized: _bool(rejectUnauthorized),
60 |     servername: _maybe(servername),
61 |     session: _maybe(session),
62 |     minDHSize: _maybe(minDHSize),
63 |     highWaterMark: _maybe(highWaterMark)
64 |   })
65 |   """
66 | ffi_convertOptions:
67 |   (enableTrace: Maybe Bool)
68 |   -> (host: Maybe String)
69 |   -> (port: Maybe Int)
70 |   -> (path: Maybe String)
71 |   -> (allowHalfOpen: Bool)
72 |   -> (rejectUnauthorized: Bool)
73 |   -> (servername: Maybe String)
74 |   -> (session: Maybe Buffer)
75 |   -> (minDHSize: Maybe Int)
76 |   -> (highWaterMark: Maybe Int)
77 |   -> Node Options
78 |
79 | export
80 | convertOptions : Options -> Node Options
81 | convertOptions o = ffi_convertOptions
82 |   o.enableTrace
83 |   o.host
84 |   o.port
85 |   o.path
86 |   o.allowHalfOpen
87 |   o.rejectUnauthorized
88 |   o.servername
89 |   o.session
90 |   o.minDHSize
91 |   o.highWaterMark
92 |
93 |