123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- const {logger} = require("./logger");
- const http = require('http');
- const https = require('https');
- const fs = require("fs");
- function getHeaders(headers, body) {
- if (body.length !== 0) {
- headers['Content-Length'] = Buffer.byteLength(body)
- }
- headers['Content-Type'] = 'application/json'
- return headers
- }
- function request_get(url, headers) {
- return new Promise((resolve, reject) => {
- var callback = function (res) {
- let data = '';
-
- res.on('data', (chunk) => {
- data += chunk;
- });
-
- res.on('end', () => {
-
- resolve(data);
- });
- }
- var errorback = function errorback(e) {
-
- reject(e);
- }
-
- const options = {
- method: 'GET',
- headers: getHeaders(headers, "")
- };
- let httpsReq = null
- if (!url.includes("https")) {
- httpsReq = http.request(url, options, callback).on('error', errorback);
- } else {
- httpsReq = https.request(url, options, callback).on('error', errorback);
- }
-
- httpsReq.end();
- });
- }
- function request_post(url, param, headers) {
- return new Promise((resolve, reject) => {
- var callback = function (res) {
- let data = '';
-
- res.on('data', (chunk) => {
- data += chunk;
- });
-
- res.on('end', () => {
-
- resolve(data);
- });
- }
- var errorback = function errorback(e) {
-
- reject(e);
- }
-
- const postData = JSON.stringify(param);
-
-
-
- const options = {
- method: 'POST',
- headers: getHeaders(headers, postData)
- };
- var postReq = null;
- if (!url.includes("https")) {
- postReq = http.request(url, options, callback).on('error', errorback);
- } else {
- postReq = https.request(url, options, callback).on('error', errorback);
- }
-
- postReq.write(postData);
-
- postReq.end();
- })
- }
- function dowFile(url, fileName, dowPath, headers) {
- return new Promise((resolve, reject) => {
-
- const fileUrl = url + "/" + fileName;
-
- const filePath = dowPath + "/" + fileName;
-
- const fileStream = fs.createWriteStream(filePath);
- headers = getHeaders(headers, "")
- logger.info('headers:!', headers, fileUrl);
- headers["User-Agent"] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
- const options = {
- headers: headers
- };
- http.get(fileUrl, options, (response) => {
-
- response.pipe(fileStream);
-
- fileStream.on('finish', () => {
-
- fileStream.close();
- logger.info('文件下载完成,船长!');
- resolve(true)
- });
- }).on('error', (err) => {
-
- logger.error('在下载文件时遇到了问题:', err);
-
- fileStream.close();
-
- if (fileStream.bytesWritten === 0) {
- fs.unlink(filePath, (unlinkErr) => {
- if (unlinkErr) logger.error('无法删除不完整的文件:', unlinkErr);
- });
- }
- reject(err)
- });
- });
- }
- module.exports = {
- request_get,
- request_post,
- dowFile
- };
|