Skip to content

Commit

Permalink
app: request retry
Browse files Browse the repository at this point in the history
  • Loading branch information
DIYgod committed May 18, 2018
1 parent a659348 commit bab3295
Show file tree
Hide file tree
Showing 64 changed files with 114 additions and 84 deletions.
1 change: 1 addition & 0 deletions config.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ module.exports = {
cacheExpire: process.env.CACHE_EXPIRE || 5 * 60, // 缓存时间,单位为秒
ua: process.env.UA || 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36',
listenInaddrAny: process.env.LISTEN_INADDR_ANY || 1, // 是否允许公网连接,取值 0 1
requestRetry: process.env.REQUEST_RETRY || 2, // 请求失败重试次数
redis: {
url: process.env.REDIS_URL || 'redis://localhost:6379/',
options: {
Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
"dependencies": {
"art-template": "4.12.2",
"axios": "0.18.0",
"axios-retry": "3.1.0",
"cheerio": "1.0.0-rc.2",
"co-redis": "2.1.1",
"crypto": "1.0.1",
Expand Down
2 changes: 1 addition & 1 deletion routes/bilibili/bangumi.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const axios = require('axios');
const axios = require('../../utils/axios');
const config = require('../../config');

module.exports = async (ctx) => {
Expand Down
2 changes: 1 addition & 1 deletion routes/bilibili/coin.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const axios = require('axios');
const axios = require('../../utils/axios');
const qs = require('querystring');
const config = require('../../config');

Expand Down
2 changes: 1 addition & 1 deletion routes/bilibili/dynamic.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const axios = require('axios');
const axios = require('../../utils/axios');
const JSONbig = require('json-bigint');
const config = require('../../config');

Expand Down
2 changes: 1 addition & 1 deletion routes/bilibili/fav.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const axios = require('axios');
const axios = require('../../utils/axios');
const qs = require('querystring');
const config = require('../../config');

Expand Down
2 changes: 1 addition & 1 deletion routes/bilibili/followers.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const axios = require('axios');
const axios = require('../../utils/axios');
const qs = require('querystring');
const config = require('../../config');

Expand Down
2 changes: 1 addition & 1 deletion routes/bilibili/followings.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const axios = require('axios');
const axios = require('../../utils/axios');
const qs = require('querystring');
const config = require('../../config');

Expand Down
2 changes: 1 addition & 1 deletion routes/bilibili/linkNews.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const axios = require('axios');
const axios = require('../../utils/axios');
const config = require('../../config');

module.exports = async (ctx) => {
Expand Down
2 changes: 1 addition & 1 deletion routes/bilibili/liveArea.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const axios = require('axios');
const axios = require('../../utils/axios');
const config = require('../../config');

module.exports = async (ctx) => {
Expand Down
2 changes: 1 addition & 1 deletion routes/bilibili/liveRoom.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const axios = require('axios');
const axios = require('../../utils/axios');
const config = require('../../config');

module.exports = async (ctx) => {
Expand Down
2 changes: 1 addition & 1 deletion routes/bilibili/liveSearch.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const axios = require('axios');
const axios = require('../../utils/axios');
const config = require('../../config');

module.exports = async (ctx) => {
Expand Down
2 changes: 1 addition & 1 deletion routes/bilibili/partion.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const axios = require('axios');
const axios = require('../../utils/axios');
const config = require('../../config');

module.exports = async (ctx) => {
Expand Down
2 changes: 1 addition & 1 deletion routes/bilibili/reply.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const axios = require('axios');
const axios = require('../../utils/axios');
const config = require('../../config');
const cheerio = require('cheerio');
const iconv = require('iconv-lite');
Expand Down
2 changes: 1 addition & 1 deletion routes/bilibili/video.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const axios = require('axios');
const axios = require('../../utils/axios');
const qs = require('querystring');
const config = require('../../config');

Expand Down
2 changes: 1 addition & 1 deletion routes/biquge/chapter.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const axios = require('axios');
const axios = require('../../utils/axios');
const cheerio = require('cheerio');
const config = require('../../config');
const iconv = require('iconv-lite');
Expand Down
11 changes: 5 additions & 6 deletions routes/cctv/category.js
Original file line number Diff line number Diff line change
@@ -1,22 +1,21 @@
const axios = require('axios');
const axios = require('../../utils/axios');
const config = require('../../config');

module.exports = async (ctx) => {
const category = ctx.params.category;
const url = `http://news.cctv.com/${category}/data/index.json`
const url = `http://news.cctv.com/${category}/data/index.json`;

const response = await axios({
method: 'get',
url: url,
headers: {
'User-Agent': config.ua,
'Referer': url,
}
Referer: url,
},
});

const data = response.data;
const list = data.rollData;
const article_item = [];

ctx.state.data = {
title: `央视新闻 ${category}`,
Expand All @@ -26,7 +25,7 @@ module.exports = async (ctx) => {
title: item.title,
description: item.description,
link: item.url,
pubDate: new Date(item.dateTime).toUTCString()
pubDate: new Date(item.dateTime).toUTCString(),
})),
};
};
2 changes: 1 addition & 1 deletion routes/dapenti/tugua.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const axios = require('axios');
const axios = require('../../utils/axios');
const cheerio = require('cheerio');
const config = require('../../config');
const iconv = require('iconv-lite');
Expand Down
2 changes: 1 addition & 1 deletion routes/disqus/posts.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const axios = require('axios');
const axios = require('../../utils/axios');
const config = require('../../config');

module.exports = async (ctx) => {
Expand Down
2 changes: 1 addition & 1 deletion routes/dockone/weekly.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const axios = require('axios');
const axios = require('../../utils/axios');
const cheerio = require('cheerio');
const config = require('../../config');

Expand Down
2 changes: 1 addition & 1 deletion routes/douban/later.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const axios = require('axios');
const axios = require('../../utils/axios');

module.exports = async (ctx) => {
const response = await axios({
Expand Down
2 changes: 1 addition & 1 deletion routes/douban/playing.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const axios = require('axios');
const axios = require('../../utils/axios');

module.exports = async (ctx) => {
const city = ctx.params.city;
Expand Down
2 changes: 1 addition & 1 deletion routes/douban/ustop.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const axios = require('axios');
const axios = require('../../utils/axios');

module.exports = async (ctx) => {
const response = await axios({
Expand Down
2 changes: 1 addition & 1 deletion routes/express/express.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const axios = require('axios');
const axios = require('../../utils/axios');
const config = require('../../config');

module.exports = async (ctx) => {
Expand Down
2 changes: 1 addition & 1 deletion routes/geektime/column.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const axios = require('axios');
const axios = require('../../utils/axios');
const config = require('../../config');

module.exports = async (ctx) => {
Expand Down
2 changes: 1 addition & 1 deletion routes/instagram/user.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const axios = require('axios');
const axios = require('../../utils/axios');
const cheerio = require('cheerio');
const config = require('../../config');

Expand Down
2 changes: 1 addition & 1 deletion routes/iqiyi/dongman.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const axios = require('axios');
const axios = require('../../utils/axios');
const cheerio = require('cheerio');
const config = require('../../config');

Expand Down
2 changes: 1 addition & 1 deletion routes/jandan/pic.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const axios = require('axios');
const axios = require('../../utils/axios');
const cheerio = require('cheerio');
const crypto = require('crypto');
const config = require('../../config');
Expand Down
2 changes: 1 addition & 1 deletion routes/jianshu/collection.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const axios = require('axios');
const axios = require('../../utils/axios');
const cheerio = require('cheerio');
const config = require('../../config');

Expand Down
2 changes: 1 addition & 1 deletion routes/jianshu/home.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const axios = require('axios');
const axios = require('../../utils/axios');
const cheerio = require('cheerio');
const config = require('../../config');

Expand Down
2 changes: 1 addition & 1 deletion routes/jianshu/monthly.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const axios = require('axios');
const axios = require('../../utils/axios');
const cheerio = require('cheerio');
const config = require('../../config');

Expand Down
2 changes: 1 addition & 1 deletion routes/jianshu/user.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const axios = require('axios');
const axios = require('../../utils/axios');
const cheerio = require('cheerio');
const config = require('../../config');

Expand Down
2 changes: 1 addition & 1 deletion routes/jianshu/weekly.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const axios = require('axios');
const axios = require('../../utils/axios');
const cheerio = require('cheerio');
const config = require('../../config');

Expand Down
2 changes: 1 addition & 1 deletion routes/jike/topic.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const axios = require('axios');
const axios = require('../../utils/axios');
const config = require('../../config');

module.exports = async (ctx) => {
Expand Down
2 changes: 1 addition & 1 deletion routes/jike/user.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const axios = require('axios');
const axios = require('../../utils/axios');
const config = require('../../config');

module.exports = async (ctx) => {
Expand Down
2 changes: 1 addition & 1 deletion routes/juejin/category.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const axios = require('axios');
const axios = require('../../utils/axios');
const config = require('../../config');

module.exports = async (ctx) => {
Expand Down
2 changes: 1 addition & 1 deletion routes/mzitu/category.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const axios = require('axios');
const axios = require('../../utils/axios');
const cheerio = require('cheerio');
const config = require('../../config');

Expand Down
2 changes: 1 addition & 1 deletion routes/mzitu/post.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const axios = require('axios');
const axios = require('../../utils/axios');
const cheerio = require('cheerio');
const config = require('../../config');

Expand Down
2 changes: 1 addition & 1 deletion routes/mzitu/tag.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const axios = require('axios');
const axios = require('../../utils/axios');
const cheerio = require('cheerio');
const config = require('../../config');

Expand Down
2 changes: 1 addition & 1 deletion routes/mzitu/tags.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const axios = require('axios');
const axios = require('../../utils/axios');
const cheerio = require('cheerio');
const config = require('../../config');

Expand Down
2 changes: 1 addition & 1 deletion routes/ncm/artist.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const axios = require('axios');
const axios = require('../../utils/axios');
const config = require('../../config');

module.exports = async (ctx) => {
Expand Down
2 changes: 1 addition & 1 deletion routes/ncm/playlist.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const axios = require('axios');
const axios = require('../../utils/axios');
const qs = require('querystring');
const config = require('../../config');

Expand Down
2 changes: 1 addition & 1 deletion routes/ncm/userplaylist.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const axios = require('axios');
const axios = require('../../utils/axios');
const qs = require('querystring');
const config = require('../../config');

Expand Down
2 changes: 1 addition & 1 deletion routes/pixiv/api/getBookmarks.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const axios = require('axios');
const axios = require('../../../utils/axios');
const maskHeader = require('../constants').maskHeader;

/**
Expand Down
2 changes: 1 addition & 1 deletion routes/pixiv/api/getIllusts.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const axios = require('axios');
const axios = require('../../../utils/axios');
const maskHeader = require('../constants').maskHeader;

/**
Expand Down
2 changes: 1 addition & 1 deletion routes/pixiv/api/getRanking.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const axios = require('axios');
const axios = require('../../../utils/axios');
const maskHeader = require('../constants').maskHeader;
const assert = require('assert');

Expand Down
2 changes: 1 addition & 1 deletion routes/pixiv/api/getUserDetail.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const axios = require('axios');
const axios = require('../../../utils/axios');
const maskHeader = require('../constants').maskHeader;

/**
Expand Down
45 changes: 26 additions & 19 deletions routes/pixiv/token.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ const config = require('../../config');
const logger = require('../../utils/logger');
const wait = require('../../utils/wait');
const FormData = require('form-data');
const axios = require('axios');
const axios = require('../../utils/axios');
const maskHeader = require('./constants').maskHeader;

const pixivConfig = config.pixiv;
Expand All @@ -29,13 +29,18 @@ async function getToken() {
data.append(key, element);
}
}
const response = await axios.post('https://oauth.secure.pixiv.net/auth/token', data, {
const response = await axios({
method: 'post',
url: 'https://oauth.secure.pixiv.net/auth/token',
data: data,
headers: {
...maskHeader,
...data.getHeaders(),
},
}).catch(function() {
logger.error('Pixiv login fail.');
});
return response.data.response;
return response && response.data && response.data.response;
}

async function refreshToken(refresh_token) {
Expand Down Expand Up @@ -63,22 +68,24 @@ async function refreshToken(refresh_token) {

async function tokenLoop() {
const res = await getToken();
logger.info('Pixiv login success.');
token = res.access_token;
let refresh_token = res.refresh_token;
let expires_in = res.expires_in * 0.9;
// eslint-disable-next-line no-constant-condition
while (true) {
await wait(expires_in * 1000);
try {
const refresh_res = await refreshToken(refresh_token);
logger.debug('Pixiv refresh token success.');
token = refresh_res.access_token;
refresh_token = refresh_res.refresh_token;
expires_in = refresh_res.expires_in * 0.9;
} catch (err) {
expires_in = 30;
logger.err(`Pixiv refresh token failed, retry in ${expires_in} seconds.`, err);
if (res) {
logger.info('Pixiv login success.');
token = res.access_token;
let refresh_token = res.refresh_token;
let expires_in = res.expires_in * 0.9;
// eslint-disable-next-line no-constant-condition
while (true) {
await wait(expires_in * 1000);
try {
const refresh_res = await refreshToken(refresh_token);
logger.debug('Pixiv refresh token success.');
token = refresh_res.access_token;
refresh_token = refresh_res.refresh_token;
expires_in = refresh_res.expires_in * 0.9;
} catch (err) {
expires_in = 30;
logger.err(`Pixiv refresh token failed, retry in ${expires_in} seconds.`, err);
}
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion routes/rsshub/rss.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const axios = require('axios');
const axios = require('../../utils/axios');
const cheerio = require('cheerio');
const config = require('../../config');

Expand Down
2 changes: 1 addition & 1 deletion routes/tieba/forum.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const axios = require('axios');
const axios = require('../../utils/axios');
const cheerio = require('cheerio');
const config = require('../../config');

Expand Down
Loading

0 comments on commit bab3295

Please sign in to comment.