Skip to content
This repository was archived by the owner on Jul 30, 2024. It is now read-only.

Add http2 module #94

Merged
merged 1 commit into from
Oct 3, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ class ConnectionOptions(
var lookup: js.UndefOr[js.Function1[String, Any]] = js.undefined,
var onread: js.UndefOr[OnreadObject] = js.undefined,
// for IPC connections
var path: js.UndefOr[String],
var path: js.UndefOr[String] = js.undefined,
// for new Socket(option)
var fd: js.UndefOr[Int] = js.undefined,
var allowHalfOpen: js.UndefOr[Boolean] = js.undefined,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package io.scalajs.nodejs.http2

import scala.scalajs.js

@js.native
trait ClientHttp2Session extends Http2Session {

def request(headers: Http2Headers, options: Http2RequestOptions = js.native): ClientHttp2Stream = js.native
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package io.scalajs.nodejs.http2

import scala.scalajs.js

@js.native
trait ClientHttp2Stream extends Http2Stream
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package io.scalajs.nodejs.http2

import scala.scalajs.js

trait HasOrigin extends js.Object {
def origin: String
}
35 changes: 35 additions & 0 deletions app/current/src/main/scala/io/scalajs/nodejs/http2/Http2.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package io.scalajs.nodejs.http2

import io.scalajs.nodejs.buffer.Buffer
import io.scalajs.nodejs.url.URL

import scala.scalajs.js
import scala.scalajs.js.annotation.JSImport
import scala.scalajs.js.typedarray.Uint8Array
import scala.scalajs.js.|

@js.native
trait Http2 extends js.Object {
def createServer(
options: Http2ServerOptions,
onRequestHandler: js.Function2[Http2ServerRequest, Http2ServerResponse, Any] = js.native
): Http2Server = js.native

def createSecureServer(
options: Http2SecureServerOptions,
onRequestHandler: js.Function2[Http2ServerRequest, Http2ServerResponse, Any] = js.native
): Http2SecureServer = js.native

def connect(authority: String | URL, options: Http2ConnectOptions, listener: js.Function): ClientHttp2Session =
js.native

def constants: Http2Constants = js.native

def getDefaultSettings(): Http2Settings = js.native
def getPackedSettings(settings: Http2Settings): Buffer = js.native
def getUnpackedSettings(buffer: Uint8Array): Http2Settings = js.native
}

@js.native
@JSImport("http2", JSImport.Namespace)
object Http2 extends Http2
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package io.scalajs.nodejs.http2

import io.scalajs.nodejs.buffer.Buffer
import io.scalajs.nodejs.http.OnreadObject
import io.scalajs.nodejs.{net, stream}
import io.scalajs.nodejs.tls.{ALPNProtocols, SecureContext, TLSCertificate}
import io.scalajs.nodejs.url.URL

import scala.scalajs.js

class Http2ConnectOptions(
var maxDeflateDynamicTableSize: js.UndefOr[Int] = js.undefined,
var maxSessionMemory: js.UndefOr[Int] = js.undefined,
var maxHeaderListPairs: js.UndefOr[Int] = js.undefined,
var maxOutstandingPings: js.UndefOr[Int] = js.undefined,
var maxSendHeaderBlockLength: js.UndefOr[Int] = js.undefined,
var paddingStrategy: js.UndefOr[Int] = js.undefined,
var peerMaxConcurrentStreams: js.UndefOr[Int] = js.undefined,
var selectPadding: js.UndefOr[js.Function2[Int, Int, Int]] = js.undefined,
var settings: js.UndefOr[Http2Settings] = js.undefined,
// specific to connect
var maxReservedRemoteStreams: js.UndefOr[Int] = js.undefined,
var createConnection: js.UndefOr[js.Function2[URL, Http2ConnectOptions, stream.IDuplex]],
// From net.connect
// for socket.connect(option)
var port: js.UndefOr[Int] = js.undefined,
var host: js.UndefOr[String] = js.undefined,
var localAddress: js.UndefOr[String] = js.undefined,
var localPort: js.UndefOr[Int] = js.undefined,
var family: js.UndefOr[Int] = js.undefined,
var hints: js.UndefOr[Int] = js.undefined,
var lookup: js.UndefOr[js.Function1[String, Any]] = js.undefined,
var onread: js.UndefOr[OnreadObject] = js.undefined,
// for IPC connections
var path: js.UndefOr[String] = js.undefined,
// for new Socket(option)
var fd: js.UndefOr[Int] = js.undefined,
var allowHalfOpen: js.UndefOr[Boolean] = js.undefined,
var readable: js.UndefOr[Boolean] = js.undefined,
var writable: js.UndefOr[Int] = js.undefined,
// From tls.connect
var socket: js.UndefOr[stream.IDuplex] = js.undefined,
var servername: js.UndefOr[String] = js.undefined,
var checkServerIdentity: js.UndefOr[js.Function2[String, TLSCertificate, Any]] = js.undefined,
var minDHSize: js.UndefOr[Int] = js.undefined,
// TLSSocketOptions
var enableTrace: js.UndefOr[Boolean] = js.undefined,
var isServer: js.UndefOr[Boolean] = js.undefined,
var server: js.UndefOr[net.Server] = js.undefined,
var requestCert: js.UndefOr[Boolean] = js.undefined,
var rejectUnauthorized: js.UndefOr[Boolean] = js.undefined,
var NPNProtocols: js.UndefOr[Boolean] = js.undefined,
var ALPNProtocols: js.UndefOr[ALPNProtocols] = js.undefined,
var SNICallback: js.UndefOr[js.Function2[String, js.Function, Any]] = js.undefined,
var session: js.UndefOr[Buffer] = js.undefined,
var requestOCSP: js.UndefOr[Boolean] = js.undefined,
var secureContext: js.UndefOr[SecureContext] = js.undefined
) extends js.Object
Loading