blob: d5e7c13ee4db6f79d309b0f12d232a9d080fcf41 [file] [log] [blame]
// Copyright (c) 2017, Anatoly Pulyaevskiy. All rights reserved. Use of this source code
// is governed by a BSD-style license that can be found in the LICENSE file.
/// Node.js "https" module bindings.
///
/// Use library-level [https] object to access this module functionality.
/// To create HTTPS agent use [createHttpsAgent].
@JS()
library node_interop.https;
import 'dart:js_util';
import 'package:js/js.dart';
import 'http.dart';
import 'node.dart';
import 'tls.dart';
export 'http.dart'
show
HttpAgent,
HttpAgentOptions,
ClientRequest,
IncomingMessage,
ServerResponse;
HTTPS get https => _https ??= require('https');
HTTPS _https;
/// Convenience method for creating instances of "https" module's Agent class.
///
/// This is equivalent of Node's `new https.Agent([options])`.
HttpsAgent createHttpsAgent([HttpsAgentOptions options]) {
var args = (options == null) ? [] : [options];
return callConstructor(https.Agent, args);
}
@JS()
@anonymous
abstract class HTTPS {
/// Returns a new instance of [HttpsServer].
///
/// The requestListener is a function which is automatically added to the
/// 'request' event.
external HttpsServer createServer(
[TLSServerOptions options, HttpRequestListener requestListener]);
/// Makes GET request. The only difference between this method and
/// [request] is that it sets the method to GET and calls req.end()
/// automatically.
external ClientRequest get(dynamic urlOrOptions,
[void Function(IncomingMessage response) callback]);
/// Makes a request to a secure web server.
external ClientRequest request(RequestOptions options,
[void Function(IncomingMessage response) callback]);
/// Global instance of [HttpsAgent] for all HTTPS client requests.
external HttpAgent get globalAgent;
/// Reference to constructor function of [HttpsAgent] class.
///
/// See also:
/// - [createHttpsAgent].
external Function get Agent;
}
@JS()
@anonymous
abstract class HttpsAgent implements HttpAgent {}
@JS()
@anonymous
abstract class HttpsServer implements TLSServer, HttpServer {
external HttpsServer close([void Function() callback]);
@override
external void listen([arg1, arg2, arg3, arg4]);
@override
external void setTimeout([num msecs, void Function() callback]);
@override
external num get timeout;
@override
external num get keepAliveTimeout;
}
@JS()
@anonymous
abstract class HttpsAgentOptions {
external bool get keepAlive;
external num get keepAliveMsecs;
external num get maxSockets;
external num get maxFreeSockets;
/// Optionally override the trusted CA certificates.
///
/// Default is to trust the well-known CAs curated by Mozilla.
external dynamic get ca;
/// Cert chains in PEM format.
external dynamic get cert;
/// Cipher suite specification, replacing the default.
external String get ciphers;
/// Name of an OpenSSL engine which can provide the client certificate.
external String get clientCertEngine;
/// PEM formatted CRLs (Certificate Revocation Lists).
external dynamic get crl;
/// Private keys in PEM format.
external dynamic get key;
/// Shared passphrase used for a single private key and/or a PFX.
external String get passphrase;
/// PFX or PKCS12 encoded private key and certificate chain.
///
/// An alternative to providing key and cert individually.
external dynamic get pfx;
/// SSL method to use.
///
/// For example, 'TLSv1_2_method' to force TLS version 1.2. Default: 'TLS_method'.
/// Possible values listed here: https://www.openssl.org/docs/man1.1.0/ssl/ssl.html#Dealing-with-Protocol-Methods
external String get secureProtocol;
external factory HttpsAgentOptions({
bool keepAlive,
num keepAliveMsecs,
num maxSockets,
num maxFreeSockets,
dynamic ca,
dynamic cert,
String ciphers,
String clientCertEngine,
dynamic crl,
dynamic key,
String passphrase,
dynamic pfx,
String secureProtocol,
});
}