You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
2.0 KiB
68 lines
2.0 KiB
2 years ago
|
'use strict';
|
||
|
const request = require('superagent')
|
||
|
|
||
|
class paasRequest {
|
||
|
constructor(root, { query = {} } = {}, option) {
|
||
|
this.root = root;
|
||
|
this.query = query
|
||
|
this.option = option
|
||
|
}
|
||
|
|
||
|
#buildUrl = (url) => {
|
||
|
return `${this.root}/${url}`;
|
||
|
}
|
||
|
|
||
|
#resultHandler = (resolve, reject) => {
|
||
|
return (err, res) => {
|
||
|
if (err) {
|
||
|
reject(err);
|
||
|
} else {
|
||
|
resolve(res[this.option.dataWord]);
|
||
|
}
|
||
|
};
|
||
|
}
|
||
|
|
||
|
get = (url, { query = {}, header = {} } = {}) => {
|
||
|
return new Promise((resolve, reject) => {
|
||
|
request.get(this.#buildUrl(url)).set(header).query(Object.assign(query, this.query)).end(this.#resultHandler(resolve, reject));
|
||
|
})
|
||
|
}
|
||
|
|
||
|
post = (url, { data = {}, query = {}, header = {} } = {}) => {
|
||
|
return new Promise((resolve, reject) => {
|
||
|
request.post(this.#buildUrl(url)).set(header).query(Object.assign(query, this.query)).send(data).end(this.#resultHandler(resolve, reject));
|
||
|
})
|
||
|
}
|
||
|
|
||
|
put = (url, { data = {}, header = {}, query = {}, } = {}) => {
|
||
|
return new Promise((resolve, reject) => {
|
||
|
request.put(this.#buildUrl(url)).set(header).query(Object.assign(query, this.query)).send(data).end(this.#resultHandler(resolve, reject));
|
||
|
})
|
||
|
}
|
||
|
|
||
|
delete = (url, { header = {}, query = {} } = {}) => {
|
||
|
return new Promise((resolve, reject) => {
|
||
|
request.delete(this.#buildUrl(url)).set(header).query(Object.assign(query, this.query)).end(this.#resultHandler(resolve, reject));
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function factory (app, opts) {
|
||
|
if (opts.pssaRequest) {
|
||
|
try {
|
||
|
for (let r of opts.pssaRequest) {
|
||
|
if (r.name && r.root) {
|
||
|
app.fs[r.name] = new paasRequest(r.root, { ...(r.params || {}) }, { dataWord: r.dataWord || 'body' })
|
||
|
} else {
|
||
|
throw 'opts.pssaRequest 参数错误!'
|
||
|
}
|
||
|
}
|
||
|
} catch (error) {
|
||
|
console.error(error)
|
||
|
process.exit(-1);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
module.exports = factory;
|