UNPKG

node-libcurl

Version:

The fastest http(s) client (and much more) for Node.js - Node.js bindings for libcurl

115 lines 5.26 kB
/** * Copyright (c) Jonathan Cardoso Machado. All Rights Reserved. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ import { MultiOptionName } from '../generated/MultiOption'; import { CurlMultiCode, CurlCode } from '../enum/CurlCode'; import { CurlPipe } from '../enum/CurlPipe'; import { CurlPush } from '../enum/CurlPush'; import { EasyNativeBinding } from './EasyNativeBinding'; import { Http2PushFrameHeaders } from './Http2PushFrameHeaders'; type SpecificOptions = 'PIPELINING'; /** * `Multi` class that acts as an wrapper around the native libcurl multi handle. * > [C++ source code](https://github.com/JCMais/node-libcurl/blob/master/src/Multi.cc) * * Using this class instead of just the {@link "Easy".Easy | Easy} allows one to run requests asynchronously. * * For usage see [examples/04-multi.js](https://github.com/JCMais/node-libcurl/blob/master/examples/04-multi.js) * * The {@link "Curl".Curl | Curl} class uses one of this internally to provide asynchronous usage of the library. * * @public */ export declare class MultiNativeBinding { /** * Sets the [`PIPELINING`](https://curl.haxx.se/libcurl/c/CURLMOPT_PIPELINING.html) option. * * Official libcurl documentation: [`curl_multi_setopt()`](http://curl.haxx.se/libcurl/c/curl_multi_setopt.html) */ setOpt(option: 'PIPELINING', value: CurlPipe): CurlMultiCode; /** * Sets the [`PUSHFUNCTION`](https://curl.haxx.se/libcurl/c/CURLMOPT_PUSHFUNCTION.html) option. * * @remarks * You **must** not use the {@link Http2PushFrameHeaders | `Http2PushFrameHeaders`} object outside * of this callback, doing so will try to use memory that libcurl has already * freed and, in the best case scenario, will cause a segmentation fault. * * In case you have denied the push, you **must** also not use the `duplicatedHandle` * outside of this callback, as libcurl would already have closed it and you would * try to access memory that has been freed. * * Errors thrown inside this callback will have the same effect than returning `CurlPush.Deny`. * * Per a libcurl limitation, there is no direct way to cancel the connection from inside * this callback, a possible workaround is to return an error * from another callback, like the progress one. * * Official libcurl documentation: [`curl_multi_setopt()`](http://curl.haxx.se/libcurl/c/curl_multi_setopt.html) */ setOpt(option: 'PUSHFUNCTION', value: (parent: EasyNativeBinding, duplicatedHandle: EasyNativeBinding, pushFrameHeaders: Http2PushFrameHeaders) => CurlPush): CurlMultiCode; /** * Sets options on this instance. * * Use {@link "Multi".Multi.multi | `Multi.option`} for predefined constants. * * Official libcurl documentation: [`curl_multi_setopt()`](http://curl.haxx.se/libcurl/c/curl_multi_setopt.html) */ setOpt(option: Exclude<MultiOptionName, SpecificOptions>, value: number): CurlMultiCode; /** * Adds an {@link "Easy".Easy | `Easy`} handle to be managed by this instance. * * The request will start right after calling this method. * * Official libcurl documentation: [`curl_multi_add_handle()`](http://curl.haxx.se/libcurl/c/curl_multi_add_handle.html) * */ addHandle(handle: EasyNativeBinding): CurlMultiCode; /** * Removes an {@link "Easy".Easy | `Easy`} handle that was inside this instance. * * Official libcurl documentation: [`curl_multi_remove_handle()`](http://curl.haxx.se/libcurl/c/curl_multi_remove_handle.html) */ removeHandle(handle: EasyNativeBinding): CurlMultiCode; /** * Allow to provide a callback that will be called when there are * new information about the handles inside this instance. * * This is basically an abstraction over [`curl_multi_info_read()`](http://curl.haxx.se/libcurl/c/curl_multi_info_read.html) * * Pass `null` to remove the current callback set. */ onMessage(cb: ((error: Error, easyHandle: EasyNativeBinding, errorCode: CurlCode) => void) | null): this; /** * Returns the number of {@link "Easy".Easy | 'Easy'} handles that are currently inside this instance */ getCount(): number; /** * Closes this multi handle. * * After the handle has been closed it must not be used again. * * This is basically the same than [`curl_multi_cleanup()`](http://curl.haxx.se/libcurl/c/curl_multi_cleanup.html) */ close(): void; /** * Returns a description for the given error code. * * Official libcurl documentation: [`curl_multi_strerror()`](http://curl.haxx.se/libcurl/c/curl_multi_strerror.html) */ strError(errorCode: CurlMultiCode): string; } export declare interface MultiNativeBindingObject { new (): MultiNativeBinding; /** * Returns a description for the given error code. * * Official libcurl documentation: [`curl_multi_strerror()`](http://curl.haxx.se/libcurl/c/curl_multi_strerror.html) */ strError(errorCode: CurlMultiCode): string; } export {}; //# sourceMappingURL=MultiNativeBinding.d.ts.map