/// import { EventEmitter } from 'events'; import * as BluebirdPromise from 'bluebird'; export interface ISoapMethod { (args: any, callback: (err: any, result: any, raw: any, soapHeader: any) => void, options?: any, extraHeaders?: any): void; } export interface ISoapServiceMethod { (args:any, callback?: (data: any) => void, headers?: any, req?: any): any; } // SOAP Fault 1.1 & 1.2 export type ISoapFault = ISoapFault12 | ISoapFault11; // SOAP Fault 1.1 export interface ISoapFault11 { Fault: { faultcode: number | string; faultstring: string; detail?: string; statusCode?: number; }; } // SOAP Fault 1.2 // 1.2 also supports additional, optional elements: // Role, Node, Detail. Should be added when soap module implements them // https://www.w3.org/TR/soap12/#soapfault export interface ISoapFault12 { Fault: { Code: { Value: string; Subcode?: { Value: string; }; }; Reason: { Text: string; }; statusCode?: number; }; } export interface ISecurity { addOptions(options: any): void; toXML(): string; } export interface IServicePort { [methodName: string]: ISoapServiceMethod; } export interface IService { [portName: string]: IServicePort; } export interface IServices { [serviceName: string]: IService; } export interface IXmlAttribute { name: string; value: string; } export interface IWsdlBaseOptions { attributesKey?: string; valueKey?: string; xmlKey?: string; overrideRootElement?: { namespace: string; xmlnsAttributes?: IXmlAttribute[]; }; ignoredNamespaces?: boolean | string[] | { namespaces?: string[]; override?: boolean; }; ignoreBaseNameSpaces?: boolean; escapeXML?: boolean; returnFault?: boolean; handleNilAsNull?: boolean; wsdl_headers?: { [key: string]: any }; wsdl_options?: { [key: string]: any }; } export interface IOptions extends IWsdlBaseOptions { disableCache?: boolean; endpoint?: string; envelopeKey?: string; httpClient?: HttpClient; request?: (options: any, callback?: (error: any, res: any, body: any) => void) => void; stream?: boolean; // wsdl options that only work for client forceSoap12Headers?: boolean; customDeserializer?: any; [key: string]: any; } export interface IOneWayOptions { responseCode?: number; emptyBody?: boolean; } export interface IServerOptions extends IWsdlBaseOptions { path: string; services: IServices; xml?: string; uri?: string; suppressStack?: boolean; oneWay?: IOneWayOptions; [key: string]: any; } export class WSDL { constructor(definition: any, uri: string, options?: IOptions); ignoredNamespaces: string[]; ignoreBaseNameSpaces: boolean; valueKey: string; xmlKey: string; xmlnsInEnvelope: string; onReady(callback: (err:Error) => void): void; processIncludes(callback: (err:Error) => void): void; describeServices(): { [k: string]: any }; toXML(): string; xmlToObject(xml: any, callback?: (err:Error, result:any) => void): any; findSchemaObject(nsURI: string, qname: string): any; objectToDocumentXML(name: string, params: any, nsPrefix?: string, nsURI?: string, type?: string): any; objectToRpcXML(name: string, params: any, nsPrefix?: string, nsURI?: string, isParts?: any): string; isIgnoredNameSpace(ns: string): boolean; filterOutIgnoredNameSpace(ns: string): string; objectToXML(obj: any, name: string, nsPrefix?: any, nsURI?: string, isFirst?: boolean, xmlnsAttr?: any, schemaObject?: any, nsContext?: any): string; processAttributes(child: any, nsContext: any): string; findSchemaType(name: any, nsURI: any): any; findChildSchemaObject(parameterTypeObj: any, childName: any, backtrace?: any): any; } export class Client extends EventEmitter { constructor(wsdl: WSDL, endpoint?: string, options?: IOptions); addBodyAttribute(bodyAttribute: any, name?: string, namespace?: string, xmlns?: string): void; addHttpHeader(name: string, value: any): void; addSoapHeader(soapHeader: any, name?: string, namespace?: any, xmlns?: string): number; changeSoapHeader(index: number, soapHeader: any, name?: string, namespace?: string, xmlns?: string): void; clearBodyAttributes(): void; clearHttpHeaders(): void; clearSoapHeaders(): void; describe(): any; getBodyAttributes(): any[]; getHttpHeaders(): { [k:string]: string }; getSoapHeaders(): string[]; setEndpoint(endpoint: string): void; setSOAPAction(action: string): void; setSecurity(security: ISecurity): void; wsdl: WSDL; [method: string]: ISoapMethod | WSDL | Function; } export function createClient(url: string, callback: (err: any, client: Client) => void): void; export function createClient(url: string, options: IOptions, callback: (err: any, client: Client) => void): void; export function createClientAsync(url: string, options?: IOptions, endpoint?: string): BluebirdPromise; export class Server extends EventEmitter { constructor(server: any, path: string, services: IServices, wsdl: WSDL, options: IServerOptions); path: string; services: IServices; wsdl: WSDL; addSoapHeader(soapHeader: any, name?: string, namespace?: any, xmlns?: string): number; changeSoapHeader(index: any, soapHeader: any, name?: any, namespace?: any, xmlns?: any): void; getSoapHeaders(): string[]; clearSoapHeaders(): void; log(type: string, data: any): any; authorizeConnection(req: any): boolean; authenticate(security: ISecurity): boolean; } export function listen(server: any, path: string, service: any, wsdl: string): Server; export function listen(server: any, options: IServerOptions): Server; export class HttpClient { constructor(options?: IOptions); buildRequest(rurl: string, data: any | string, exheaders?: { [key: string]: any }, exoptions?: { [key: string]: any }): any; handleResponse(req: any, res: any, body: any | string): any | string; request(rurl: string, data: any | string, callback: (err: any, res: any, body: any | string) => void, exheaders?: { [key: string]: any }, exoptions?: { [key: string]: any }): any; requestStream(rurl: string, data: any | string, exheaders?: { [key: string]: any }, exoptions?: { [key: string]: any }): any; } export class BasicAuthSecurity implements ISecurity { constructor(username: string, password: string, defaults?: any); addHeaders(headers: any): void; addOptions(options: any): void; toXML(): string; } export class BearerSecurity implements ISecurity { constructor(token: string, defaults?: any); addHeaders(headers: any): void; addOptions(options: any): void; toXML(): string; } export class WSSecurity implements ISecurity { constructor(username: string, password: string, options?: any); addOptions(options: any): void; toXML(): string; } export class WSSecurityCert implements ISecurity { constructor(privatePEM: any, publicP12PEM: any, password: any); addOptions(options: any): void; toXML(): string; } export class ClientSSLSecurity implements ISecurity { constructor(key: string | Buffer, cert: string | Buffer, ca?: string | any[] | Buffer, defaults?: any); constructor(key: string | Buffer, cert: string | Buffer, defaults?: any); addOptions(options: any): void; toXML(): string; } export class ClientSSLSecurityPFX implements ISecurity { constructor(pfx: string | Buffer, passphrase: string, defaults?: any); constructor(pfx: string | Buffer, defaults?: any); addOptions(options: any): void; toXML(): string; } export function passwordDigest(nonce: string, created: string, password: string): string; // Below are added for backwards compatibility for previous @types/soap users. export interface Security extends ISecurity {} export interface SoapMethod extends ISoapMethod {} export interface Option extends IOptions {}