Fix wrong method in error message (#2065)
This commit is contained in:
parent
78f7e006d5
commit
40cd0ea422
@ -10,10 +10,11 @@ export const createInvoice = async ({ msats, description, expiry }, { socket, ru
|
||||
|
||||
const url = `${agent.protocol}//${socket}/v1/invoice`
|
||||
|
||||
const method = 'POST'
|
||||
let res
|
||||
try {
|
||||
res = await fetch(url, {
|
||||
method: 'POST',
|
||||
method,
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
Rune: rune,
|
||||
@ -41,8 +42,8 @@ export const createInvoice = async ({ msats, description, expiry }, { socket, ru
|
||||
throw err
|
||||
}
|
||||
|
||||
assertResponseOk(res)
|
||||
assertContentTypeJson(res)
|
||||
assertResponseOk(res, { method })
|
||||
assertContentTypeJson(res, { method })
|
||||
|
||||
const inv = await res.json()
|
||||
if (inv.error) {
|
||||
|
24
lib/url.js
24
lib/url.js
@ -213,22 +213,30 @@ export function parseNwcUrl (walletConnectUrl) {
|
||||
return params
|
||||
}
|
||||
|
||||
export function assertResponseOk (res) {
|
||||
if (!res.ok) {
|
||||
class ResponseAssertError extends Error {
|
||||
constructor (res, { method } = {}) {
|
||||
if (method) {
|
||||
super(`${method} ${res.url}: ${res.status} ${res.statusText}`)
|
||||
} else {
|
||||
super(`${res.url}: ${res.status} ${res.statusText}`)
|
||||
}
|
||||
this.name = 'ResponseAssertError'
|
||||
// consume response body to avoid memory leaks
|
||||
// see https://github.com/nodejs/node/issues/51162
|
||||
res.text().catch(() => {})
|
||||
throw new Error(`POST ${res.url}: ${res.status} ${res.statusText}`)
|
||||
}
|
||||
}
|
||||
|
||||
export function assertContentTypeJson (res) {
|
||||
export function assertResponseOk (res, { method } = {}) {
|
||||
if (!res.ok) {
|
||||
throw new ResponseAssertError(res, { method })
|
||||
}
|
||||
}
|
||||
|
||||
export function assertContentTypeJson (res, { method } = {}) {
|
||||
const contentType = res.headers.get('content-type')
|
||||
if (!contentType || !contentType.includes('application/json')) {
|
||||
// consume response body to avoid memory leaks
|
||||
// see https://github.com/nodejs/node/issues/51162
|
||||
res.text().catch(() => {})
|
||||
throw new Error(`POST ${res.url}: ${res.status} ${res.statusText}`)
|
||||
throw new ResponseAssertError(res, { method })
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -35,8 +35,9 @@ export async function getWallet ({ apiKey, currency }, { signal }) {
|
||||
}
|
||||
|
||||
export async function request ({ apiKey, query, variables = {} }, { signal }) {
|
||||
const method = 'POST'
|
||||
const res = await fetchWithTimeout(galoyBlinkUrl, {
|
||||
method: 'POST',
|
||||
method,
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
'X-API-KEY': apiKey
|
||||
@ -45,8 +46,8 @@ export async function request ({ apiKey, query, variables = {} }, { signal }) {
|
||||
signal
|
||||
})
|
||||
|
||||
assertResponseOk(res)
|
||||
assertContentTypeJson(res)
|
||||
assertResponseOk(res, { method })
|
||||
assertContentTypeJson(res, { method })
|
||||
|
||||
return res.json()
|
||||
}
|
||||
|
@ -27,10 +27,11 @@ export const createInvoice = async (
|
||||
}
|
||||
|
||||
// call callback with amount and conditionally comment
|
||||
const res = await fetchWithTimeout(callbackUrl.toString(), { signal })
|
||||
const method = 'GET'
|
||||
const res = await fetchWithTimeout(callbackUrl.toString(), { method, signal })
|
||||
|
||||
assertResponseOk(res)
|
||||
assertContentTypeJson(res)
|
||||
assertResponseOk(res, { method })
|
||||
assertContentTypeJson(res, { method })
|
||||
|
||||
const body = await res.json()
|
||||
if (body.status === 'ERROR') {
|
||||
|
@ -33,9 +33,10 @@ async function getWallet ({ url, adminKey, invoiceKey }, { signal }) {
|
||||
headers.append('Content-Type', 'application/json')
|
||||
headers.append('X-Api-Key', adminKey || invoiceKey)
|
||||
|
||||
const res = await fetchWithTimeout(url + path, { method: 'GET', headers, signal })
|
||||
const method = 'GET'
|
||||
const res = await fetchWithTimeout(url + path, { method, headers, signal })
|
||||
|
||||
assertContentTypeJson(res)
|
||||
assertContentTypeJson(res, { method })
|
||||
if (!res.ok) {
|
||||
const errBody = await res.json()
|
||||
throw new Error(errBody.detail)
|
||||
@ -55,9 +56,10 @@ async function postPayment (bolt11, { url, adminKey }, { signal }) {
|
||||
|
||||
const body = JSON.stringify({ bolt11, out: true })
|
||||
|
||||
const res = await fetchWithTimeout(url + path, { method: 'POST', headers, body, signal })
|
||||
const method = 'POST'
|
||||
const res = await fetchWithTimeout(url + path, { method, headers, body, signal })
|
||||
|
||||
assertContentTypeJson(res)
|
||||
assertContentTypeJson(res, { method })
|
||||
if (!res.ok) {
|
||||
const errBody = await res.json()
|
||||
throw new Error(errBody.detail)
|
||||
@ -75,9 +77,10 @@ async function getPayment (paymentHash, { url, adminKey }, { signal }) {
|
||||
headers.append('Content-Type', 'application/json')
|
||||
headers.append('X-Api-Key', adminKey)
|
||||
|
||||
const res = await fetchWithTimeout(url + path, { method: 'GET', headers, signal })
|
||||
const method = 'GET'
|
||||
const res = await fetchWithTimeout(url + path, { method, headers, signal })
|
||||
|
||||
assertContentTypeJson(res)
|
||||
assertContentTypeJson(res, { method })
|
||||
if (!res.ok) {
|
||||
const errBody = await res.json()
|
||||
throw new Error(errBody.detail)
|
||||
|
@ -42,9 +42,10 @@ export async function createInvoice (
|
||||
}
|
||||
|
||||
let res
|
||||
const method = 'POST'
|
||||
try {
|
||||
res = await fetch(`${agent.protocol}//${hostname}${path}`, {
|
||||
method: 'POST',
|
||||
method,
|
||||
headers,
|
||||
agent,
|
||||
body,
|
||||
@ -54,12 +55,12 @@ export async function createInvoice (
|
||||
if (err.name === 'AbortError') {
|
||||
// XXX node-fetch doesn't throw our custom TimeoutError but throws a generic error so we have to handle that manually.
|
||||
// see https://github.com/node-fetch/node-fetch/issues/1462
|
||||
throw new FetchTimeoutError('POST', url, WALLET_CREATE_INVOICE_TIMEOUT_MS)
|
||||
throw new FetchTimeoutError(method, url, WALLET_CREATE_INVOICE_TIMEOUT_MS)
|
||||
}
|
||||
throw err
|
||||
}
|
||||
|
||||
assertContentTypeJson(res)
|
||||
assertContentTypeJson(res, { method })
|
||||
if (!res.ok) {
|
||||
const errBody = await res.json()
|
||||
throw new Error(errBody.detail)
|
||||
|
@ -22,15 +22,16 @@ export async function sendPayment (bolt11, { url, primaryPassword }, { signal })
|
||||
const body = new URLSearchParams()
|
||||
body.append('invoice', bolt11)
|
||||
|
||||
const method = 'POST'
|
||||
const res = await fetchWithTimeout(url + path, {
|
||||
method: 'POST',
|
||||
method,
|
||||
headers,
|
||||
body,
|
||||
signal
|
||||
})
|
||||
|
||||
assertResponseOk(res)
|
||||
assertContentTypeJson(res)
|
||||
assertResponseOk(res, { method })
|
||||
assertContentTypeJson(res, { method })
|
||||
|
||||
const payment = await res.json()
|
||||
const preimage = payment.paymentPreimage
|
||||
|
@ -31,16 +31,17 @@ export async function createInvoice (
|
||||
const hostname = url.replace(/^https?:\/\//, '').replace(/\/+$/, '')
|
||||
const agent = getAgent({ hostname })
|
||||
|
||||
const method = 'POST'
|
||||
const res = await fetchWithTimeout(`${agent.protocol}//${hostname}${path}`, {
|
||||
method: 'POST',
|
||||
method,
|
||||
headers,
|
||||
agent,
|
||||
body,
|
||||
signal
|
||||
})
|
||||
|
||||
assertResponseOk(res)
|
||||
assertContentTypeJson(res)
|
||||
assertResponseOk(res, { method })
|
||||
assertContentTypeJson(res, { method })
|
||||
|
||||
const payment = await res.json()
|
||||
return payment.serialized
|
||||
|
Loading…
x
Reference in New Issue
Block a user