Skip to content

Reimplement bindings #49

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 28 commits into from
Aug 1, 2023
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
2db7ca1
Add bindings to Incoming/OutgoingMessage
JordanMartinez Jul 29, 2023
4c8c880
add comments for which FFI is allowed
JordanMartinez Jul 29, 2023
3fbea8a
Use ty var to prevent incorrect usage
JordanMartinez Jul 29, 2023
aaa9180
Update exports
JordanMartinez Jul 29, 2023
f9674ac
Add bindings to ClientRequest & ServerResponse
JordanMartinez Jul 29, 2023
7da25fc
Add bindings to Server
JordanMartinez Jul 29, 2023
b94570c
Move current HTTP bindings to `old`
JordanMartinez Jul 29, 2023
b4c745b
Finish all but Agent for node:http bindings
JordanMartinez Jul 29, 2023
0d08fe3
Move Secure into old
JordanMartinez Jul 29, 2023
2230214
Fix FFI name
JordanMartinez Jul 29, 2023
c57994f
Implement bindings to `https`
JordanMartinez Jul 29, 2023
dd39a92
Remove old bindings
JordanMartinez Jul 29, 2023
b03db19
Fix FFI & export list for ClientRequest
JordanMartinez Jul 29, 2023
c1b6165
Update fn to match returned type
JordanMartinez Jul 29, 2023
46be9dd
Make things not effectful
JordanMartinez Jul 29, 2023
e51281e
Delineate between headers and cookies
JordanMartinez Jul 29, 2023
055a659
Add opts-only-arg version of request/get
JordanMartinez Jul 31, 2023
e2394d5
Add FFI: implicit set/get of status code/msg
JordanMartinez Jul 31, 2023
f15caa7
Drop duplicate API for https server
JordanMartinez Jul 31, 2023
9cc718b
Unify `http` and `https` server API
JordanMartinez Jul 31, 2023
2e57d01
Rename module to `Node.HTTPS`
JordanMartinez Jul 31, 2023
1afa9a8
Make tests compile and pass again
JordanMartinez Jul 31, 2023
bf0626c
Add docs
JordanMartinez Jul 31, 2023
e49ea49
Update url to 7.0.0
JordanMartinez Aug 1, 2023
35e7fca
Expose URL-variant of request/get
JordanMartinez Aug 1, 2023
13c4995
Update export lists: exclude FFI
JordanMartinez Aug 1, 2023
4dd5fc3
Add changelog entry
JordanMartinez Aug 1, 2023
08604f6
Update CI actions/node; add purs-tidy
JordanMartinez Aug 1, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Fix FFI & export list for ClientRequest
  • Loading branch information
JordanMartinez committed Jul 29, 2023
commit b03db191c3149d193eb48b1568fca539e47e888d
10 changes: 5 additions & 5 deletions src/Node/HTTP/ClientRequest.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
export const pathImpl = (cr) => cr.path;
export const methodImpl = (cr) => cr.method;
export const hostImpl = (cr) => cr.host;
export const protocolImpl = (cr) => cr.protocol;
export const reusedSocketImpl = (cr) => cr.reusedSocket;
export const path = (cr) => cr.path;
export const method = (cr) => cr.method;
export const host = (cr) => cr.host;
export const protocol = (cr) => cr.protocol;
export const reusedSocket = (cr) => cr.reusedSocket;
export const setNoDelayImpl = (d, cr) => cr.setNoDelay(d);
export const setSocketKeepAliveImpl = (b, ms, cr) => cr.setSocketKeepAlive(b, ms);
export const setTimeoutImpl = (ms, cr) => cr.setTimeout(ms);
64 changes: 32 additions & 32 deletions src/Node/HTTP/ClientRequest.purs
Original file line number Diff line number Diff line change
@@ -1,36 +1,35 @@
module Node.HTTP.ClientRequest
( toOutgoingMessage
, toReadable
, closeH
, complete
, headers
, headersDistinct
, httpVersion
, connectH
, continueH
, finishH
, informationH
, responseH
, socketH
, timeoutH
, upgradeH
, path
, method
, rawHeaders
, rawTrailers
, socket
, statusCode
, statusMessage
, trailers
, trailersDistinct
, url
, host
, protocol
, reusedSocket
, setNoDelay
, setSocketKeepAlive
, setTimeout
) where

import Prelude

import Data.Array.NonEmpty (NonEmptyArray)
import Data.Maybe (Maybe)
import Data.Nullable (Nullable, toMaybe)
import Data.Time.Duration (Milliseconds)
import Effect (Effect)
import Effect.Uncurried (EffectFn1, runEffectFn1)
import Effect.Uncurried (EffectFn2, EffectFn3, mkEffectFn1, mkEffectFn3, runEffectFn2, runEffectFn3)
import Foreign (Foreign)
import Foreign.Object (Object)
import Node.Buffer (Buffer)
import Node.EventEmitter (EventHandle(..))
import Node.EventEmitter.UtilTypes (EventHandle0)
import Node.HTTP.IncomingMessage as IM
import Node.HTTP.Types (IMClientRequest, IMServer, IncomingMessage)
import Node.Stream (Readable, Duplex)
import Node.EventEmitter.UtilTypes (EventHandle0, EventHandle3, EventHandle1)
import Node.HTTP.Types (ClientRequest, IMClientRequest, IncomingMessage, OutgoingMessage)
import Node.Stream (Duplex)
import Unsafe.Coerce (unsafeCoerce)

toOutgoingMessage :: ClientRequest -> OutgoingMessage
Expand All @@ -45,18 +44,19 @@ continueH = EventHandle "continue" identity
finishH :: EventHandle0 ClientRequest
finishH = EventHandle "finish" identity

informationH :: EventHandle1 ClientRequest {
httpVersion :: String
httpVersionMajor :: Int
httpVersionMinor :: Int
statusCode :: Int
statusMessage :: String
headers :: Object Foreign
rawHeaders :: Array String
}
informationH
:: EventHandle1 ClientRequest
{ httpVersion :: String
, httpVersionMajor :: Int
, httpVersionMinor :: Int
, statusCode :: Int
, statusMessage :: String
, headers :: Object Foreign
, rawHeaders :: Array String
}
informationH = EventHandle "information" mkEffectFn1

responseH :: EventHandle1 ClientRequest (IncomingMessage ClientRequest)
responseH :: EventHandle1 ClientRequest (IncomingMessage IMClientRequest)
responseH = EventHandle "response" mkEffectFn1

socketH :: EventHandle1 ClientRequest Duplex
Expand Down