1
0
mirror of https://github.com/oceanprotocol-archive/squid-js.git synced 2024-02-02 15:31:51 +01:00
squid-js/src/utils/WebServiceConnector.ts

48 lines
1.3 KiB
TypeScript
Raw Normal View History

2019-01-22 14:18:58 +01:00
import fetch, { BodyInit, RequestInit, Response } from "node-fetch"
import Logger from "./Logger"
2018-10-26 11:57:26 +02:00
/**
* Provides a common interface to web services.
*/
2018-11-19 12:16:11 +01:00
export default class WebServiceConnector {
2018-10-26 11:57:26 +02:00
public post(url: string, payload: BodyInit): Promise<Response> {
2018-11-01 12:47:48 +01:00
return this.fetch(url, {
2018-10-26 11:57:26 +02:00
method: "POST",
body: payload,
2018-11-16 10:03:16 +01:00
headers: {
"Content-type": "application/json",
},
2018-10-26 11:57:26 +02:00
})
}
2018-10-29 16:38:23 +01:00
public get(url: string): Promise<Response> {
2018-11-01 12:47:48 +01:00
return this.fetch(url, {
2018-10-29 16:38:23 +01:00
method: "GET",
2018-11-16 10:03:16 +01:00
headers: {
"Content-type": "application/json",
},
2018-10-29 16:38:23 +01:00
})
}
2018-11-01 12:47:48 +01:00
public put(url: string, payload: BodyInit): Promise<Response> {
2018-11-01 12:47:48 +01:00
return this.fetch(url, {
method: "PUT",
body: payload,
2018-11-16 10:03:16 +01:00
headers: {
"Content-type": "application/json",
},
2018-11-01 12:47:48 +01:00
})
}
private async fetch(url: string, opts: RequestInit): Promise<Response> {
const result = await fetch(url, opts);
if (!result.ok) {
Logger.warn(`Error requesting [${opts.method}] ${url}`)
Logger.warn(`Response message: \n${await result.text()}`)
throw result
}
return result
2018-11-01 12:47:48 +01:00
}
2018-10-26 11:57:26 +02:00
}