@robinpath/soap 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +92 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/soap.d.ts +126 -0
- package/dist/soap.d.ts.map +1 -0
- package/dist/soap.js +234 -0
- package/dist/soap.js.map +1 -0
- package/package.json +13 -0
package/README.md
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# @robinpath/soap
|
|
2
|
+
|
|
3
|
+
> SOAP web service client, XML-RPC support, WSDL parsing, and envelope building
|
|
4
|
+
|
|
5
|
+
   
|
|
6
|
+
|
|
7
|
+
## Why use this module?
|
|
8
|
+
|
|
9
|
+
The `soap` module lets you:
|
|
10
|
+
|
|
11
|
+
- Call a SOAP web service
|
|
12
|
+
- Build SOAP XML envelope
|
|
13
|
+
- Parse SOAP XML response
|
|
14
|
+
- Call XML-RPC service
|
|
15
|
+
- Build XML-RPC request
|
|
16
|
+
|
|
17
|
+
All functions are callable directly from RobinPath scripts with a simple, consistent API.
|
|
18
|
+
|
|
19
|
+
## Installation
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npm install @robinpath/soap
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Quick Start
|
|
26
|
+
|
|
27
|
+
No credentials needed — start using it right away:
|
|
28
|
+
|
|
29
|
+
```robinpath
|
|
30
|
+
soap.buildEnvelope "GetUser" {"id": 1}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Available Functions
|
|
34
|
+
|
|
35
|
+
| Function | Description |
|
|
36
|
+
|----------|-------------|
|
|
37
|
+
| `soap.call` | Call a SOAP web service |
|
|
38
|
+
| `soap.buildEnvelope` | Build SOAP XML envelope |
|
|
39
|
+
| `soap.parseEnvelope` | Parse SOAP XML response |
|
|
40
|
+
| `soap.xmlRpc` | Call XML-RPC service |
|
|
41
|
+
| `soap.buildXmlRpc` | Build XML-RPC request |
|
|
42
|
+
| `soap.parseXmlRpc` | Parse XML-RPC response |
|
|
43
|
+
| `soap.wsdl` | Fetch and parse WSDL |
|
|
44
|
+
| `soap.fault` | Create SOAP fault XML |
|
|
45
|
+
| `soap.getFault` | Extract fault from SOAP XML |
|
|
46
|
+
|
|
47
|
+
## Examples
|
|
48
|
+
|
|
49
|
+
### Build SOAP XML envelope
|
|
50
|
+
|
|
51
|
+
```robinpath
|
|
52
|
+
soap.buildEnvelope "GetUser" {"id": 1}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Parse SOAP XML response
|
|
56
|
+
|
|
57
|
+
```robinpath
|
|
58
|
+
soap.parseEnvelope $xml
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Call XML-RPC service
|
|
62
|
+
|
|
63
|
+
```robinpath
|
|
64
|
+
soap.xmlRpc "http://example.com/rpc" "system.listMethods" []
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Integration with RobinPath
|
|
68
|
+
|
|
69
|
+
```typescript
|
|
70
|
+
import { RobinPath } from "@wiredwp/robinpath";
|
|
71
|
+
import Module from "@robinpath/soap";
|
|
72
|
+
|
|
73
|
+
const rp = new RobinPath();
|
|
74
|
+
rp.registerModule(Module.name, Module.functions);
|
|
75
|
+
rp.registerModuleMeta(Module.name, Module.functionMetadata);
|
|
76
|
+
|
|
77
|
+
const result = await rp.executeScript(`
|
|
78
|
+
soap.buildEnvelope "GetUser" {"id": 1}
|
|
79
|
+
`);
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Full API Reference
|
|
83
|
+
|
|
84
|
+
See [MODULE.md](./MODULE.md) for complete documentation including all parameters, return types, error handling, and advanced examples.
|
|
85
|
+
|
|
86
|
+
## Related Modules
|
|
87
|
+
|
|
88
|
+
- [`@robinpath/json`](../json) — JSON module for complementary functionality
|
|
89
|
+
|
|
90
|
+
## License
|
|
91
|
+
|
|
92
|
+
MIT
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ModuleAdapter } from "@wiredwp/robinpath";
|
|
2
|
+
declare const SoapModule: ModuleAdapter;
|
|
3
|
+
export default SoapModule;
|
|
4
|
+
export { SoapModule };
|
|
5
|
+
export { SoapFunctions, SoapFunctionMetadata, SoapModuleMetadata } from "./soap.js";
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,QAAA,MAAM,UAAU,EAAE,aAAmK,CAAC;AACtL,eAAe,UAAU,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { SoapFunctions, SoapFunctionMetadata, SoapModuleMetadata } from "./soap.js";
|
|
2
|
+
const SoapModule = { name: "soap", functions: SoapFunctions, functionMetadata: SoapFunctionMetadata, moduleMetadata: SoapModuleMetadata, global: false };
|
|
3
|
+
export default SoapModule;
|
|
4
|
+
export { SoapModule };
|
|
5
|
+
export { SoapFunctions, SoapFunctionMetadata, SoapModuleMetadata } from "./soap.js";
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACpF,MAAM,UAAU,GAAkB,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,oBAA2B,EAAE,cAAc,EAAE,kBAAyB,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AACtL,eAAe,UAAU,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC"}
|
package/dist/soap.d.ts
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import type { BuiltinHandler } from "@wiredwp/robinpath";
|
|
2
|
+
export declare const SoapFunctions: Record<string, BuiltinHandler>;
|
|
3
|
+
export declare const SoapFunctionMetadata: {
|
|
4
|
+
call: {
|
|
5
|
+
description: string;
|
|
6
|
+
parameters: {
|
|
7
|
+
name: string;
|
|
8
|
+
dataType: string;
|
|
9
|
+
description: string;
|
|
10
|
+
formInputType: string;
|
|
11
|
+
required: boolean;
|
|
12
|
+
}[];
|
|
13
|
+
returnType: string;
|
|
14
|
+
returnDescription: string;
|
|
15
|
+
example: string;
|
|
16
|
+
};
|
|
17
|
+
buildEnvelope: {
|
|
18
|
+
description: string;
|
|
19
|
+
parameters: {
|
|
20
|
+
name: string;
|
|
21
|
+
dataType: string;
|
|
22
|
+
description: string;
|
|
23
|
+
formInputType: string;
|
|
24
|
+
required: boolean;
|
|
25
|
+
}[];
|
|
26
|
+
returnType: string;
|
|
27
|
+
returnDescription: string;
|
|
28
|
+
example: string;
|
|
29
|
+
};
|
|
30
|
+
parseEnvelope: {
|
|
31
|
+
description: string;
|
|
32
|
+
parameters: {
|
|
33
|
+
name: string;
|
|
34
|
+
dataType: string;
|
|
35
|
+
description: string;
|
|
36
|
+
formInputType: string;
|
|
37
|
+
required: boolean;
|
|
38
|
+
}[];
|
|
39
|
+
returnType: string;
|
|
40
|
+
returnDescription: string;
|
|
41
|
+
example: string;
|
|
42
|
+
};
|
|
43
|
+
xmlRpc: {
|
|
44
|
+
description: string;
|
|
45
|
+
parameters: {
|
|
46
|
+
name: string;
|
|
47
|
+
dataType: string;
|
|
48
|
+
description: string;
|
|
49
|
+
formInputType: string;
|
|
50
|
+
required: boolean;
|
|
51
|
+
}[];
|
|
52
|
+
returnType: string;
|
|
53
|
+
returnDescription: string;
|
|
54
|
+
example: string;
|
|
55
|
+
};
|
|
56
|
+
buildXmlRpc: {
|
|
57
|
+
description: string;
|
|
58
|
+
parameters: {
|
|
59
|
+
name: string;
|
|
60
|
+
dataType: string;
|
|
61
|
+
description: string;
|
|
62
|
+
formInputType: string;
|
|
63
|
+
required: boolean;
|
|
64
|
+
}[];
|
|
65
|
+
returnType: string;
|
|
66
|
+
returnDescription: string;
|
|
67
|
+
example: string;
|
|
68
|
+
};
|
|
69
|
+
parseXmlRpc: {
|
|
70
|
+
description: string;
|
|
71
|
+
parameters: {
|
|
72
|
+
name: string;
|
|
73
|
+
dataType: string;
|
|
74
|
+
description: string;
|
|
75
|
+
formInputType: string;
|
|
76
|
+
required: boolean;
|
|
77
|
+
}[];
|
|
78
|
+
returnType: string;
|
|
79
|
+
returnDescription: string;
|
|
80
|
+
example: string;
|
|
81
|
+
};
|
|
82
|
+
wsdl: {
|
|
83
|
+
description: string;
|
|
84
|
+
parameters: {
|
|
85
|
+
name: string;
|
|
86
|
+
dataType: string;
|
|
87
|
+
description: string;
|
|
88
|
+
formInputType: string;
|
|
89
|
+
required: boolean;
|
|
90
|
+
}[];
|
|
91
|
+
returnType: string;
|
|
92
|
+
returnDescription: string;
|
|
93
|
+
example: string;
|
|
94
|
+
};
|
|
95
|
+
fault: {
|
|
96
|
+
description: string;
|
|
97
|
+
parameters: {
|
|
98
|
+
name: string;
|
|
99
|
+
dataType: string;
|
|
100
|
+
description: string;
|
|
101
|
+
formInputType: string;
|
|
102
|
+
required: boolean;
|
|
103
|
+
}[];
|
|
104
|
+
returnType: string;
|
|
105
|
+
returnDescription: string;
|
|
106
|
+
example: string;
|
|
107
|
+
};
|
|
108
|
+
getFault: {
|
|
109
|
+
description: string;
|
|
110
|
+
parameters: {
|
|
111
|
+
name: string;
|
|
112
|
+
dataType: string;
|
|
113
|
+
description: string;
|
|
114
|
+
formInputType: string;
|
|
115
|
+
required: boolean;
|
|
116
|
+
}[];
|
|
117
|
+
returnType: string;
|
|
118
|
+
returnDescription: string;
|
|
119
|
+
example: string;
|
|
120
|
+
};
|
|
121
|
+
};
|
|
122
|
+
export declare const SoapModuleMetadata: {
|
|
123
|
+
description: string;
|
|
124
|
+
methods: string[];
|
|
125
|
+
};
|
|
126
|
+
//# sourceMappingURL=soap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"soap.d.ts","sourceRoot":"","sources":["../src/soap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAoC,MAAM,oBAAoB,CAAC;AA6L3F,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAmG,CAAC;AAE7J,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAUhC,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;CAG9B,CAAC"}
|
package/dist/soap.js
ADDED
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
function escapeXml(s) {
|
|
2
|
+
return s.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'");
|
|
3
|
+
}
|
|
4
|
+
function jsToXml(value, tag) {
|
|
5
|
+
if (value === null || value === undefined)
|
|
6
|
+
return tag ? `<${tag} xsi:nil="true"/>` : "";
|
|
7
|
+
if (typeof value === "boolean" || typeof value === "number")
|
|
8
|
+
return tag ? `<${tag}>${value}</${tag}>` : String(value);
|
|
9
|
+
if (typeof value === "string")
|
|
10
|
+
return tag ? `<${tag}>${escapeXml(value)}</${tag}>` : escapeXml(value);
|
|
11
|
+
if (Array.isArray(value))
|
|
12
|
+
return value.map((v) => jsToXml(v, tag)).join("");
|
|
13
|
+
if (typeof value === "object") {
|
|
14
|
+
const entries = Object.entries(value);
|
|
15
|
+
const inner = entries.map(([k, v]) => jsToXml(v, k)).join("");
|
|
16
|
+
return tag ? `<${tag}>${inner}</${tag}>` : inner;
|
|
17
|
+
}
|
|
18
|
+
return tag ? `<${tag}>${String(value)}</${tag}>` : String(value);
|
|
19
|
+
}
|
|
20
|
+
function xmlToJs(xml) {
|
|
21
|
+
const trimmed = xml.trim();
|
|
22
|
+
if (!trimmed.startsWith("<"))
|
|
23
|
+
return trimmed;
|
|
24
|
+
const results = {};
|
|
25
|
+
const tagRe = /<([a-zA-Z0-9_:.-]+)([^>]*?)(?:\/>|>([\s\S]*?)<\/\1>)/g;
|
|
26
|
+
let match;
|
|
27
|
+
while ((match = tagRe.exec(trimmed)) !== null) {
|
|
28
|
+
const tag = match[1];
|
|
29
|
+
const attrs = match[2] ?? "";
|
|
30
|
+
if (attrs.includes('xsi:nil="true"')) {
|
|
31
|
+
results[tag] = null;
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
const body = match[3];
|
|
35
|
+
if (body === undefined || body === "") {
|
|
36
|
+
results[tag] = "";
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
const parsed = xmlToJs(body);
|
|
40
|
+
if (results[tag] !== undefined) {
|
|
41
|
+
if (Array.isArray(results[tag]))
|
|
42
|
+
results[tag].push(parsed);
|
|
43
|
+
else
|
|
44
|
+
results[tag] = [results[tag], parsed];
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
results[tag] = parsed;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
if (Object.keys(results).length === 0)
|
|
51
|
+
return trimmed.replace(/<[^>]+>/g, "").trim();
|
|
52
|
+
return results;
|
|
53
|
+
}
|
|
54
|
+
const buildEnvelope = (args) => {
|
|
55
|
+
const method = String(args[0] ?? "");
|
|
56
|
+
const params = (typeof args[1] === "object" && args[1] !== null ? args[1] : {});
|
|
57
|
+
const ns = args[2] ? String(args[2]) : undefined;
|
|
58
|
+
const nsAttr = ns ? ` xmlns="${escapeXml(ns)}"` : "";
|
|
59
|
+
const body = jsToXml(params);
|
|
60
|
+
return `<?xml version="1.0" encoding="UTF-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soap:Header/><soap:Body><${method}${nsAttr}>${body}</${method}></soap:Body></soap:Envelope>`;
|
|
61
|
+
};
|
|
62
|
+
const parseEnvelope = (args) => {
|
|
63
|
+
const xml = String(args[0] ?? "");
|
|
64
|
+
const bodyMatch = xml.match(/<(?:soap:|SOAP-ENV:)?Body[^>]*>([\s\S]*?)<\/(?:soap:|SOAP-ENV:)?Body>/i);
|
|
65
|
+
if (!bodyMatch)
|
|
66
|
+
return { fault: null, result: null };
|
|
67
|
+
const bodyXml = bodyMatch[1];
|
|
68
|
+
const faultMatch = bodyXml.match(/<(?:soap:|SOAP-ENV:)?Fault[^>]*>([\s\S]*?)<\/(?:soap:|SOAP-ENV:)?Fault>/i);
|
|
69
|
+
if (faultMatch) {
|
|
70
|
+
const fault = xmlToJs(faultMatch[1]);
|
|
71
|
+
return { fault, result: null };
|
|
72
|
+
}
|
|
73
|
+
return { fault: null, result: xmlToJs(bodyXml) };
|
|
74
|
+
};
|
|
75
|
+
const call = async (args) => {
|
|
76
|
+
const url = String(args[0] ?? "");
|
|
77
|
+
const method = String(args[1] ?? "");
|
|
78
|
+
const params = (typeof args[2] === "object" && args[2] !== null ? args[2] : {});
|
|
79
|
+
const opts = (typeof args[3] === "object" && args[3] !== null ? args[3] : {});
|
|
80
|
+
const ns = opts.namespace ? String(opts.namespace) : undefined;
|
|
81
|
+
const envelope = buildEnvelope([method, params, ns]);
|
|
82
|
+
const headers = { "Content-Type": "text/xml; charset=utf-8" };
|
|
83
|
+
if (opts.soapAction !== undefined)
|
|
84
|
+
headers["SOAPAction"] = String(opts.soapAction);
|
|
85
|
+
else
|
|
86
|
+
headers["SOAPAction"] = ns ? `${ns}/${method}` : method;
|
|
87
|
+
if (opts.headers && typeof opts.headers === "object")
|
|
88
|
+
Object.assign(headers, opts.headers);
|
|
89
|
+
const res = await fetch(url, { method: "POST", headers, body: envelope, signal: opts.timeout ? AbortSignal.timeout(Number(opts.timeout)) : undefined });
|
|
90
|
+
const text = await res.text();
|
|
91
|
+
const parsed = parseEnvelope([text]);
|
|
92
|
+
return { status: res.status, ok: res.ok, ...parsed, raw: text };
|
|
93
|
+
};
|
|
94
|
+
const buildXmlRpc = (args) => {
|
|
95
|
+
const method = String(args[0] ?? "");
|
|
96
|
+
const params = Array.isArray(args[1]) ? args[1] : [];
|
|
97
|
+
function valueToXml(v) {
|
|
98
|
+
if (v === null || v === undefined)
|
|
99
|
+
return "<value><nil/></value>";
|
|
100
|
+
if (typeof v === "boolean")
|
|
101
|
+
return `<value><boolean>${v ? 1 : 0}</boolean></value>`;
|
|
102
|
+
if (typeof v === "number")
|
|
103
|
+
return Number.isInteger(v) ? `<value><int>${v}</int></value>` : `<value><double>${v}</double></value>`;
|
|
104
|
+
if (typeof v === "string")
|
|
105
|
+
return `<value><string>${escapeXml(v)}</string></value>`;
|
|
106
|
+
if (Array.isArray(v))
|
|
107
|
+
return `<value><array><data>${v.map(valueToXml).join("")}</data></array></value>`;
|
|
108
|
+
if (typeof v === "object") {
|
|
109
|
+
const members = Object.entries(v).map(([k, val]) => `<member><name>${escapeXml(k)}</name>${valueToXml(val)}</member>`).join("");
|
|
110
|
+
return `<value><struct>${members}</struct></value>`;
|
|
111
|
+
}
|
|
112
|
+
return `<value><string>${escapeXml(String(v))}</string></value>`;
|
|
113
|
+
}
|
|
114
|
+
const paramXml = params.map((p) => `<param>${valueToXml(p)}</param>`).join("");
|
|
115
|
+
return `<?xml version="1.0"?><methodCall><methodName>${escapeXml(method)}</methodName><params>${paramXml}</params></methodCall>`;
|
|
116
|
+
};
|
|
117
|
+
function parseXmlRpcValue(xml) {
|
|
118
|
+
const trimmed = xml.trim();
|
|
119
|
+
const intM = trimmed.match(/<(?:int|i4)>(.*?)<\/(?:int|i4)>/);
|
|
120
|
+
if (intM)
|
|
121
|
+
return parseInt(intM[1], 10);
|
|
122
|
+
const dblM = trimmed.match(/<double>(.*?)<\/double>/);
|
|
123
|
+
if (dblM)
|
|
124
|
+
return parseFloat(dblM[1]);
|
|
125
|
+
const boolM = trimmed.match(/<boolean>(.*?)<\/boolean>/);
|
|
126
|
+
if (boolM)
|
|
127
|
+
return boolM[1] === "1";
|
|
128
|
+
const strM = trimmed.match(/<string>(.*?)<\/string>/s);
|
|
129
|
+
if (strM)
|
|
130
|
+
return strM[1];
|
|
131
|
+
if (trimmed.includes("<nil"))
|
|
132
|
+
return null;
|
|
133
|
+
const arrM = trimmed.match(/<array>\s*<data>([\s\S]*?)<\/data>\s*<\/array>/);
|
|
134
|
+
if (arrM) {
|
|
135
|
+
const vals = [];
|
|
136
|
+
const valRe = /<value>([\s\S]*?)<\/value>/g;
|
|
137
|
+
let vm;
|
|
138
|
+
while ((vm = valRe.exec(arrM[1])) !== null)
|
|
139
|
+
vals.push(parseXmlRpcValue(vm[1]));
|
|
140
|
+
return vals;
|
|
141
|
+
}
|
|
142
|
+
const structM = trimmed.match(/<struct>([\s\S]*?)<\/struct>/);
|
|
143
|
+
if (structM) {
|
|
144
|
+
const obj = {};
|
|
145
|
+
const memRe = /<member>\s*<name>(.*?)<\/name>\s*<value>([\s\S]*?)<\/value>\s*<\/member>/g;
|
|
146
|
+
let mm;
|
|
147
|
+
while ((mm = memRe.exec(structM[1])) !== null)
|
|
148
|
+
obj[mm[1]] = parseXmlRpcValue(mm[2]);
|
|
149
|
+
return obj;
|
|
150
|
+
}
|
|
151
|
+
return trimmed.replace(/<[^>]+>/g, "").trim();
|
|
152
|
+
}
|
|
153
|
+
const parseXmlRpc = (args) => {
|
|
154
|
+
const xml = String(args[0] ?? "");
|
|
155
|
+
const faultM = xml.match(/<fault>\s*<value>([\s\S]*?)<\/value>\s*<\/fault>/);
|
|
156
|
+
if (faultM)
|
|
157
|
+
return { fault: parseXmlRpcValue(faultM[1]), params: null };
|
|
158
|
+
const params = [];
|
|
159
|
+
const paramRe = /<param>\s*<value>([\s\S]*?)<\/value>\s*<\/param>/g;
|
|
160
|
+
let pm;
|
|
161
|
+
while ((pm = paramRe.exec(xml)) !== null)
|
|
162
|
+
params.push(parseXmlRpcValue(pm[1]));
|
|
163
|
+
return { fault: null, params };
|
|
164
|
+
};
|
|
165
|
+
const xmlRpc = async (args) => {
|
|
166
|
+
const url = String(args[0] ?? "");
|
|
167
|
+
const method = String(args[1] ?? "");
|
|
168
|
+
const params = Array.isArray(args[2]) ? args[2] : [];
|
|
169
|
+
const opts = (typeof args[3] === "object" && args[3] !== null ? args[3] : {});
|
|
170
|
+
const body = buildXmlRpc([method, params]);
|
|
171
|
+
const headers = { "Content-Type": "text/xml; charset=utf-8" };
|
|
172
|
+
if (opts.headers && typeof opts.headers === "object")
|
|
173
|
+
Object.assign(headers, opts.headers);
|
|
174
|
+
const res = await fetch(url, { method: "POST", headers, body, signal: opts.timeout ? AbortSignal.timeout(Number(opts.timeout)) : undefined });
|
|
175
|
+
const text = await res.text();
|
|
176
|
+
const parsed = parseXmlRpc([text]);
|
|
177
|
+
return { status: res.status, ok: res.ok, ...parsed, raw: text };
|
|
178
|
+
};
|
|
179
|
+
const wsdl = async (args) => {
|
|
180
|
+
const url = String(args[0] ?? "");
|
|
181
|
+
const opts = (typeof args[1] === "object" && args[1] !== null ? args[1] : {});
|
|
182
|
+
const res = await fetch(url, { signal: opts.timeout ? AbortSignal.timeout(Number(opts.timeout)) : undefined });
|
|
183
|
+
const text = await res.text();
|
|
184
|
+
const services = [];
|
|
185
|
+
const svcRe = /<wsdl:service[^>]*name="([^"]+)"/g;
|
|
186
|
+
let sm;
|
|
187
|
+
while ((sm = svcRe.exec(text)) !== null)
|
|
188
|
+
services.push(sm[1]);
|
|
189
|
+
const operations = [];
|
|
190
|
+
const opRe = /<wsdl:operation[^>]*name="([^"]+)"/g;
|
|
191
|
+
let om;
|
|
192
|
+
while ((om = opRe.exec(text)) !== null)
|
|
193
|
+
if (!operations.includes(om[1]))
|
|
194
|
+
operations.push(om[1]);
|
|
195
|
+
const bindings = [];
|
|
196
|
+
const bRe = /<wsdl:binding[^>]*name="([^"]+)"/g;
|
|
197
|
+
let bm;
|
|
198
|
+
while ((bm = bRe.exec(text)) !== null)
|
|
199
|
+
bindings.push(bm[1]);
|
|
200
|
+
return { services, operations, bindings, raw: text };
|
|
201
|
+
};
|
|
202
|
+
const fault = (args) => {
|
|
203
|
+
const code = String(args[0] ?? "Server");
|
|
204
|
+
const message = String(args[1] ?? "Internal Error");
|
|
205
|
+
const detail = args[2] ? String(args[2]) : undefined;
|
|
206
|
+
return `<soap:Fault><faultcode>${escapeXml(code)}</faultcode><faultstring>${escapeXml(message)}</faultstring>${detail ? `<detail>${escapeXml(detail)}</detail>` : ""}</soap:Fault>`;
|
|
207
|
+
};
|
|
208
|
+
const getFault = (args) => {
|
|
209
|
+
const xml = String(args[0] ?? "");
|
|
210
|
+
const faultM = xml.match(/<(?:soap:|SOAP-ENV:)?Fault[^>]*>([\s\S]*?)<\/(?:soap:|SOAP-ENV:)?Fault>/i);
|
|
211
|
+
if (!faultM)
|
|
212
|
+
return null;
|
|
213
|
+
const code = faultM[1].match(/<faultcode[^>]*>(.*?)<\/faultcode>/i)?.[1] ?? null;
|
|
214
|
+
const message = faultM[1].match(/<faultstring[^>]*>(.*?)<\/faultstring>/i)?.[1] ?? null;
|
|
215
|
+
const detail = faultM[1].match(/<detail[^>]*>([\s\S]*?)<\/detail>/i)?.[1] ?? null;
|
|
216
|
+
return { code, message, detail };
|
|
217
|
+
};
|
|
218
|
+
export const SoapFunctions = { call, buildEnvelope, parseEnvelope, xmlRpc, buildXmlRpc, parseXmlRpc, wsdl, fault, getFault };
|
|
219
|
+
export const SoapFunctionMetadata = {
|
|
220
|
+
call: { description: "Call a SOAP web service", parameters: [{ name: "url", dataType: "string", description: "Service URL", formInputType: "text", required: true }, { name: "method", dataType: "string", description: "Method name", formInputType: "text", required: true }, { name: "params", dataType: "object", description: "Parameters", formInputType: "text", required: false }, { name: "options", dataType: "object", description: "{namespace, soapAction, headers, timeout}", formInputType: "text", required: false }], returnType: "object", returnDescription: "{status, ok, fault, result, raw}", example: 'soap.call "http://example.com/ws" "GetUser" {"id": 1} {"namespace": "http://example.com"}' },
|
|
221
|
+
buildEnvelope: { description: "Build SOAP XML envelope", parameters: [{ name: "method", dataType: "string", description: "Method name", formInputType: "text", required: true }, { name: "params", dataType: "object", description: "Parameters", formInputType: "text", required: false }, { name: "namespace", dataType: "string", description: "XML namespace", formInputType: "text", required: false }], returnType: "string", returnDescription: "SOAP XML", example: 'soap.buildEnvelope "GetUser" {"id": 1}' },
|
|
222
|
+
parseEnvelope: { description: "Parse SOAP XML response", parameters: [{ name: "xml", dataType: "string", description: "SOAP XML", formInputType: "text", required: true }], returnType: "object", returnDescription: "{fault, result}", example: 'soap.parseEnvelope $xml' },
|
|
223
|
+
xmlRpc: { description: "Call XML-RPC service", parameters: [{ name: "url", dataType: "string", description: "Service URL", formInputType: "text", required: true }, { name: "method", dataType: "string", description: "Method name", formInputType: "text", required: true }, { name: "params", dataType: "array", description: "Parameters array", formInputType: "text", required: false }, { name: "options", dataType: "object", description: "{headers, timeout}", formInputType: "text", required: false }], returnType: "object", returnDescription: "{status, ok, fault, params, raw}", example: 'soap.xmlRpc "http://example.com/rpc" "system.listMethods" []' },
|
|
224
|
+
buildXmlRpc: { description: "Build XML-RPC request", parameters: [{ name: "method", dataType: "string", description: "Method name", formInputType: "text", required: true }, { name: "params", dataType: "array", description: "Parameters", formInputType: "text", required: false }], returnType: "string", returnDescription: "XML-RPC XML", example: 'soap.buildXmlRpc "getUser" [1, "admin"]' },
|
|
225
|
+
parseXmlRpc: { description: "Parse XML-RPC response", parameters: [{ name: "xml", dataType: "string", description: "XML-RPC XML", formInputType: "text", required: true }], returnType: "object", returnDescription: "{fault, params}", example: 'soap.parseXmlRpc $xml' },
|
|
226
|
+
wsdl: { description: "Fetch and parse WSDL", parameters: [{ name: "url", dataType: "string", description: "WSDL URL", formInputType: "text", required: true }, { name: "options", dataType: "object", description: "{timeout}", formInputType: "text", required: false }], returnType: "object", returnDescription: "{services, operations, bindings, raw}", example: 'soap.wsdl "http://example.com/ws?wsdl"' },
|
|
227
|
+
fault: { description: "Create SOAP fault XML", parameters: [{ name: "code", dataType: "string", description: "Fault code", formInputType: "text", required: true }, { name: "message", dataType: "string", description: "Fault message", formInputType: "text", required: true }, { name: "detail", dataType: "string", description: "Detail", formInputType: "text", required: false }], returnType: "string", returnDescription: "Fault XML", example: 'soap.fault "Client" "Invalid request"' },
|
|
228
|
+
getFault: { description: "Extract fault from SOAP XML", parameters: [{ name: "xml", dataType: "string", description: "SOAP XML", formInputType: "text", required: true }], returnType: "object", returnDescription: "{code, message, detail} or null", example: 'soap.getFault $xml' },
|
|
229
|
+
};
|
|
230
|
+
export const SoapModuleMetadata = {
|
|
231
|
+
description: "SOAP web service client, XML-RPC support, WSDL parsing, and envelope building",
|
|
232
|
+
methods: ["call", "buildEnvelope", "parseEnvelope", "xmlRpc", "buildXmlRpc", "parseXmlRpc", "wsdl", "fault", "getFault"],
|
|
233
|
+
};
|
|
234
|
+
//# sourceMappingURL=soap.js.map
|
package/dist/soap.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"soap.js","sourceRoot":"","sources":["../src/soap.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@robinpath/soap",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"publishConfig": { "access": "public" },
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"exports": { ".": { "import": "./dist/index.js", "types": "./dist/index.d.ts" } },
|
|
9
|
+
"files": ["dist"],
|
|
10
|
+
"scripts": { "build": "tsc", "test": "node --import tsx --test tests/*.test.ts" },
|
|
11
|
+
"peerDependencies": { "@wiredwp/robinpath": ">=0.20.0" },
|
|
12
|
+
"devDependencies": { "@wiredwp/robinpath": "^0.30.1", "tsx": "^4.19.0", "typescript": "^5.6.0" }
|
|
13
|
+
}
|