fix(xo-cli): better fallback logic for JSON-RPC transport

Logic:
- before: fallback on all network, HTTP or JSON-RPC formatting errors
- now: fallback only when response content-type is not `application/json`.
This commit is contained in:
Julien Fontanet
2023-03-06 14:53:54 +01:00
parent f14f98f7c1
commit aec5ad4099

View File

@@ -19,21 +19,15 @@ export default ({ secureOptions, url, agent }) => {
},
method: 'POST',
agent,
}).catch(error => {
console.warn('xen-api/transports/json-rpc', error)
throw new UnsupportedTransport()
})
const text = await res.text()
let response
try {
response = parse(text)
} catch (error) {
// content-type is `text/xml` on old hosts where JSON-RPC is unsupported
if (res.headers['content-type'] !== 'application/json') {
throw new UnsupportedTransport()
}
const response = parse(await res.text())
if (response.type === 'response') {
return response.result
}