merge handle
Showing
11 changed files
with
80 additions
and
74 deletions
@@ -12,22 +12,26 @@ if (config.useOneapm) { | @@ -12,22 +12,26 @@ if (config.useOneapm) { | ||
12 | require('oneapm'); | 12 | require('oneapm'); |
13 | } | 13 | } |
14 | 14 | ||
15 | -let express = require('express'), | ||
16 | - path = require('path'), | ||
17 | - bodyParser = require('body-parser'), | ||
18 | - cookieParser = require('cookie-parser'), | ||
19 | - favicon = require('serve-favicon'), | ||
20 | - pkg = require('./package.json'); | 15 | +const express = require('express'); |
16 | +const path = require('path'); | ||
17 | +const bodyParser = require('body-parser'); | ||
18 | +const cookieParser = require('cookie-parser'); | ||
19 | +const favicon = require('serve-favicon'); | ||
20 | +const session = require('express-session'); | ||
21 | +const memcached = require('connect-memcached'); | ||
22 | +const pkg = require('./package.json'); | ||
21 | 23 | ||
22 | -require('express-handlebars'); | 24 | +const app = express(); |
25 | +const MemcachedStore = memcached(session); | ||
23 | 26 | ||
24 | 27 | ||
25 | -let app = express(); | ||
26 | - | ||
27 | // 向模板注入变量 | 28 | // 向模板注入变量 |
28 | app.locals.devEnv = app.get('env') === 'development'; | 29 | app.locals.devEnv = app.get('env') === 'development'; |
29 | app.locals.version = pkg.version; | 30 | app.locals.version = pkg.version; |
30 | 31 | ||
32 | +// 指定libray目录 | ||
33 | +global.library = path.resolve('./library'); | ||
34 | + | ||
31 | app.set('view engine', '.hbs'); | 35 | app.set('view engine', '.hbs'); |
32 | 36 | ||
33 | app.use(favicon(path.join(__dirname, '/public/favicon.ico'))); | 37 | app.use(favicon(path.join(__dirname, '/public/favicon.ico'))); |
@@ -35,11 +39,22 @@ app.use(express.static(path.join(__dirname, 'public'))); | @@ -35,11 +39,22 @@ app.use(express.static(path.join(__dirname, 'public'))); | ||
35 | app.use(bodyParser.json()); | 39 | app.use(bodyParser.json()); |
36 | app.use(bodyParser.urlencoded({extended: false})); | 40 | app.use(bodyParser.urlencoded({extended: false})); |
37 | app.use(cookieParser()); | 41 | app.use(cookieParser()); |
42 | +app.use(session({ | ||
43 | + secret: '3e5fec7deca0b8305cefe2ad9d90ff5e', | ||
44 | + name: 'PHPSESSID', | ||
45 | + prefix: 'yohobuy', | ||
46 | + proxy: true, | ||
47 | + resave: true, | ||
48 | + saveUninitialized: true, | ||
49 | + store: new MemcachedStore({ | ||
50 | + hosts: config.memcache.session | ||
51 | + }) | ||
52 | +})); | ||
38 | 53 | ||
39 | // dispatcher | 54 | // dispatcher |
40 | require('./dispatch')(app); | 55 | require('./dispatch')(app); |
41 | 56 | ||
42 | // listener | 57 | // listener |
43 | -app.listen(6001, function() { | 58 | +app.listen(config.port, function() { |
44 | console.log('yohobuy start'); | 59 | console.log('yohobuy start'); |
45 | }); | 60 | }); |
@@ -10,11 +10,13 @@ const isProduction = process.env.NODE_ENV === 'production'; | @@ -10,11 +10,13 @@ const isProduction = process.env.NODE_ENV === 'production'; | ||
10 | const isTest = process.env.NODE_ENV === 'test'; | 10 | const isTest = process.env.NODE_ENV === 'test'; |
11 | 11 | ||
12 | module.exports = { | 12 | module.exports = { |
13 | + port: 6001, | ||
13 | siteUrl: 'http://m.yohobuy.com', | 14 | siteUrl: 'http://m.yohobuy.com', |
14 | domains: { | 15 | domains: { |
15 | api: 'http://testapi.yoho.cn:28078/', // http://devapi.yoho.cn:58078/ http://testapi.yoho.cn:28078/ | 16 | api: 'http://testapi.yoho.cn:28078/', // http://devapi.yoho.cn:58078/ http://testapi.yoho.cn:28078/ |
16 | service: 'http://devapi.yoho.cn:58078/' | 17 | service: 'http://devapi.yoho.cn:58078/' |
17 | }, | 18 | }, |
19 | + useOneapm: false, | ||
18 | useCache: true, | 20 | useCache: true, |
19 | memcache: { | 21 | memcache: { |
20 | master: ['192.168.102.168:12580'], | 22 | master: ['192.168.102.168:12580'], |
@@ -26,12 +28,12 @@ module.exports = { | @@ -26,12 +28,12 @@ module.exports = { | ||
26 | infoFile: { | 28 | infoFile: { |
27 | name: 'info', | 29 | name: 'info', |
28 | level: 'info', | 30 | level: 'info', |
29 | - filename: 'info.log' | 31 | + filename: 'log/info.log' |
30 | }, | 32 | }, |
31 | errorFile: { | 33 | errorFile: { |
32 | name: 'error', | 34 | name: 'error', |
33 | level: 'error', | 35 | level: 'error', |
34 | - filename: 'error.log', | 36 | + filename: 'log/error.log', |
35 | handleExceptions: true | 37 | handleExceptions: true |
36 | }, | 38 | }, |
37 | udp: { // send by udp | 39 | udp: { // send by udp |
@@ -6,7 +6,7 @@ | @@ -6,7 +6,7 @@ | ||
6 | 6 | ||
7 | 'use strict'; | 7 | 'use strict'; |
8 | 8 | ||
9 | -const _ = require('lodash'); | 9 | +const qs = require('querystring'); |
10 | const md5 = require('md5'); | 10 | const md5 = require('md5'); |
11 | 11 | ||
12 | const privateKey = { | 12 | const privateKey = { |
@@ -24,7 +24,7 @@ const privateKey = { | @@ -24,7 +24,7 @@ const privateKey = { | ||
24 | * @return {Object} 排序之后的参数对象 | 24 | * @return {Object} 排序之后的参数对象 |
25 | */ | 25 | */ |
26 | const packageSort = argument => { | 26 | const packageSort = argument => { |
27 | - var newObj = {}; | 27 | + let newObj = {}; |
28 | 28 | ||
29 | for (let k of Object.keys(argument).sort()) { | 29 | for (let k of Object.keys(argument).sort()) { |
30 | newObj[k] = argument[k]; | 30 | newObj[k] = argument[k]; |
@@ -39,18 +39,11 @@ const packageSort = argument => { | @@ -39,18 +39,11 @@ const packageSort = argument => { | ||
39 | * @return {string} 生成的签名字符串 | 39 | * @return {string} 生成的签名字符串 |
40 | */ | 40 | */ |
41 | const makeSign = argument => { | 41 | const makeSign = argument => { |
42 | - var qs = []; | ||
43 | - | ||
44 | - _.forEach(argument, function(value, key) { | ||
45 | - qs.push(key + '=' + _.trim(value)); | ||
46 | - }); | ||
47 | - | ||
48 | - return md5(qs.join('&')).toLowerCase(); | 42 | + return md5(qs.stringify(argument)).toLowerCase(); |
49 | }; | 43 | }; |
50 | 44 | ||
51 | // 生成API签名,调用后端接口的时候有私钥校验 | 45 | // 生成API签名,调用后端接口的时候有私钥校验 |
52 | exports.apiSign = (params) => { | 46 | exports.apiSign = (params) => { |
53 | - | ||
54 | /* eslint-disable */ | 47 | /* eslint-disable */ |
55 | var sign = packageSort(Object.assign({ | 48 | var sign = packageSort(Object.assign({ |
56 | client_type: 'h5', | 49 | client_type: 'h5', |
@@ -60,18 +53,18 @@ exports.apiSign = (params) => { | @@ -60,18 +53,18 @@ exports.apiSign = (params) => { | ||
60 | screen_size: '720x1280', | 53 | screen_size: '720x1280', |
61 | v: '7' | 54 | v: '7' |
62 | }, params)); | 55 | }, params)); |
63 | - | ||
64 | /* eslint-enable */ | 56 | /* eslint-enable */ |
65 | 57 | ||
66 | - return Object.assign(sign, { | ||
67 | - | 58 | + sign = Object.assign(sign, { |
68 | client_secret: makeSign(sign) // eslint-disable-line camelcase | 59 | client_secret: makeSign(sign) // eslint-disable-line camelcase |
69 | }); | 60 | }); |
61 | + delete sign.private_key; | ||
62 | + return sign; | ||
70 | }; | 63 | }; |
71 | 64 | ||
72 | // 检查签名,APP 访问 H5 页面的时候需要检查 | 65 | // 检查签名,APP 访问 H5 页面的时候需要检查 |
73 | exports.checkSign = (params) => { | 66 | exports.checkSign = (params) => { |
74 | - var clientSecret = params.client_secret, // eslint-disable-line camelcase | 67 | + let clientSecret = params.client_secret, // eslint-disable-line camelcase |
75 | sortedParams; | 68 | sortedParams; |
76 | 69 | ||
77 | // 忽略部分参数 | 70 | // 忽略部分参数 |
@@ -88,7 +81,7 @@ exports.checkSign = (params) => { | @@ -88,7 +81,7 @@ exports.checkSign = (params) => { | ||
88 | 81 | ||
89 | // 检查签名,APP 访问 H5 页面的时候需要检查, 有可能不同于上边的签名方式 | 82 | // 检查签名,APP 访问 H5 页面的时候需要检查, 有可能不同于上边的签名方式 |
90 | exports.webSign = (params) => { | 83 | exports.webSign = (params) => { |
91 | - var webPrivateKey = 'yohobuyapp'; | 84 | + const webPrivateKey = 'yohobuyapp'; |
92 | 85 | ||
93 | return params.key === md5(md5(webPrivateKey) + params.uid); | 86 | return params.key === md5(md5(webPrivateKey) + params.uid); |
94 | }; | 87 | }; |
@@ -13,9 +13,9 @@ | @@ -13,9 +13,9 @@ | ||
13 | "online": "NODE_ENV=\"production\" node app.js", | 13 | "online": "NODE_ENV=\"production\" node app.js", |
14 | "debug": "DEBUG=\"express:*\" node app.js", | 14 | "debug": "DEBUG=\"express:*\" node app.js", |
15 | "lint-js": "./node_modules/.bin/eslint -c .eslintrc --cache --fix .", | 15 | "lint-js": "./node_modules/.bin/eslint -c .eslintrc --cache --fix .", |
16 | - "lint-css": "./node_modules/.bin/stylelint --config .stylelintrc public/**/*.css", | 16 | + "lint-css": "./node_modules/.bin/stylelint --config .stylelintrc public/scss/**/*.css", |
17 | "precommit": "node lint.js", | 17 | "precommit": "node lint.js", |
18 | - "test": "ava" | 18 | + "test": "./node_modules/.bin/nyc ./node_modules/.bin/ava" |
19 | }, | 19 | }, |
20 | "ava": { | 20 | "ava": { |
21 | "tap": true, | 21 | "tap": true, |
@@ -24,8 +24,7 @@ | @@ -24,8 +24,7 @@ | ||
24 | ], | 24 | ], |
25 | "babel": { | 25 | "babel": { |
26 | "presets": [ | 26 | "presets": [ |
27 | - "es2015", | ||
28 | - "stage-2" | 27 | + "es2015" |
29 | ] | 28 | ] |
30 | } | 29 | } |
31 | }, | 30 | }, |
@@ -33,9 +32,11 @@ | @@ -33,9 +32,11 @@ | ||
33 | "dependencies": { | 32 | "dependencies": { |
34 | "bluebird": "^3.3.5", | 33 | "bluebird": "^3.3.5", |
35 | "body-parser": "^1.15.0", | 34 | "body-parser": "^1.15.0", |
35 | + "connect-memcached": "^0.2.0", | ||
36 | "cookie-parser": "^1.4.1", | 36 | "cookie-parser": "^1.4.1", |
37 | "express": "^4.13.1", | 37 | "express": "^4.13.1", |
38 | "express-handlebars": "^3.0.0", | 38 | "express-handlebars": "^3.0.0", |
39 | + "express-session": "^1.13.0", | ||
39 | "influxdb-winston": "^1.0.1", | 40 | "influxdb-winston": "^1.0.1", |
40 | "lodash": "^4.12.0", | 41 | "lodash": "^4.12.0", |
41 | "md5": "^2.1.0", | 42 | "md5": "^2.1.0", |
@@ -45,17 +46,15 @@ | @@ -45,17 +46,15 @@ | ||
45 | "request-promise": "^3.0.0", | 46 | "request-promise": "^3.0.0", |
46 | "serve-favicon": "^2.3.0", | 47 | "serve-favicon": "^2.3.0", |
47 | "winston": "^2.2.0", | 48 | "winston": "^2.2.0", |
48 | - "winston-daily-rotate-file": "^1.0.1", | ||
49 | - "yoho-handlebars": "0.0.1" | 49 | + "winston-daily-rotate-file": "^1.0.1" |
50 | }, | 50 | }, |
51 | "devDependencies": { | 51 | "devDependencies": { |
52 | "autoprefixer": "^6.3.6", | 52 | "autoprefixer": "^6.3.6", |
53 | "ava": "^0.14.0", | 53 | "ava": "^0.14.0", |
54 | "babel-cli": "^6.8.0", | 54 | "babel-cli": "^6.8.0", |
55 | "babel-preset-es2015": "^6.6.0", | 55 | "babel-preset-es2015": "^6.6.0", |
56 | - "babel-preset-stage-2": "^6.5.0", | ||
57 | "babel-register": "^6.8.0", | 56 | "babel-register": "^6.8.0", |
58 | - "eslint": "^2.9.0", | 57 | + "eslint": "^2.10.2", |
59 | "eslint-config-yoho": "^1.0.1", | 58 | "eslint-config-yoho": "^1.0.1", |
60 | "gulp": "^3.9.1", | 59 | "gulp": "^3.9.1", |
61 | "gulp-cssnano": "^2.1.2", | 60 | "gulp-cssnano": "^2.1.2", |
@@ -66,6 +65,7 @@ | @@ -66,6 +65,7 @@ | ||
66 | "husky": "^0.11.4", | 65 | "husky": "^0.11.4", |
67 | "mocha": "^2.4.5", | 66 | "mocha": "^2.4.5", |
68 | "nodemon": "1.9.2", | 67 | "nodemon": "1.9.2", |
68 | + "nyc": "^6.4.3", | ||
69 | "postcss-assets": "^4.0.1", | 69 | "postcss-assets": "^4.0.1", |
70 | "postcss-cachebuster": "^0.1.2", | 70 | "postcss-cachebuster": "^0.1.2", |
71 | "postcss-calc": "^5.2.1", | 71 | "postcss-calc": "^5.2.1", |
@@ -79,17 +79,17 @@ | @@ -79,17 +79,17 @@ | ||
79 | "postcss-sprites": "^3.1.2", | 79 | "postcss-sprites": "^3.1.2", |
80 | "postcss-use": "^2.0.2", | 80 | "postcss-use": "^2.0.2", |
81 | "precss": "^1.4.0", | 81 | "precss": "^1.4.0", |
82 | - "rewire": "^2.5.1", | ||
83 | "shelljs": "^0.7.0", | 82 | "shelljs": "^0.7.0", |
84 | "stylelint": "^6.3.3", | 83 | "stylelint": "^6.3.3", |
85 | - "stylelint-config-yoho": "^1.2.2", | 84 | + "stylelint-config-yoho": "^1.2.3", |
86 | "webpack": "^1.13.0", | 85 | "webpack": "^1.13.0", |
87 | "webpack-dev-server": "^1.14.1", | 86 | "webpack-dev-server": "^1.14.1", |
88 | "webpack-stream": "^3.1.0", | 87 | "webpack-stream": "^3.1.0", |
89 | - "yoho-fastclick": "0.0.1", | ||
90 | - "yoho-hammer": "0.0.1", | ||
91 | - "yoho-jquery": "0.0.3", | ||
92 | - "yoho-jquery-lazyload": "0.0.2", | ||
93 | - "yoho-swiper": "0.0.1" | 88 | + "yoho-fastclick": "^1.0.6", |
89 | + "yoho-hammer": "^2.0.7", | ||
90 | + "yoho-handlebars": "^4.0.5", | ||
91 | + "yoho-jquery": "^1.9.1", | ||
92 | + "yoho-jquery-lazyload": "^1.9.7", | ||
93 | + "yoho-swiper": "^3.3.1" | ||
94 | } | 94 | } |
95 | } | 95 | } |
1 | -// /** | ||
2 | -// * http api 测试 | ||
3 | -// * | ||
4 | -// * @author: jiangfeng<jeff.jiang@yoho.cn> | ||
5 | -// * @date: 2016/05/17 | ||
6 | -// */ | 1 | +/** |
2 | + * http api 测试 | ||
3 | + * | ||
4 | + * @author: jiangfeng<jeff.jiang@yoho.cn> | ||
5 | + * @date: 2016/05/17 | ||
6 | + */ | ||
7 | 7 | ||
8 | -// import test from 'ava'; | 8 | +const test = require('ava'); |
9 | +const sign = require('../../library/sign'); | ||
10 | +const API = require('../../library/api').ServiceAPI; | ||
9 | 11 | ||
10 | -// import {SearchAPI} from '../../library/api'; | 12 | +const api = new API(); |
11 | 13 | ||
12 | -// test('api get test', async (t) => { | ||
13 | -// let api = new SearchAPI(''); | ||
14 | -// let data = await api.get(); | ||
15 | -// console.log(data); | ||
16 | -// }); | 14 | +test('api get test', (t) => { |
15 | + return api.get('operations/api/v6/category/getCategory', sign.apiSign({})).then(result => { | ||
16 | + if (result && result.code === 200) { | ||
17 | + t.pass(); | ||
18 | + } else { | ||
19 | + t.fail(); | ||
20 | + } | ||
21 | + }); | ||
22 | +}); |
test/library/commonmodel.test.js
deleted
100644 → 0
1 | -const headerModel = require('../../doraemon/models/header'); | ||
2 | - | ||
3 | -const test = require('ava').test; | ||
4 | - | ||
5 | -test('test setNavHeader method', t => { | ||
6 | - const headerData = headerModel.setNavHeader('逛'); | ||
7 | - | ||
8 | - t.is(headerData.navTitle, '逛'); | ||
9 | - t.true(headerData.backUrl); | ||
10 | - t.true(headerData.navBtn); | ||
11 | -}); |
@@ -6,7 +6,7 @@ | @@ -6,7 +6,7 @@ | ||
6 | 6 | ||
7 | 'use strict'; | 7 | 'use strict'; |
8 | 8 | ||
9 | -const test = require('ava').test; | 9 | +const test = require('ava'); |
10 | const helpers = require('../../library/helpers'); | 10 | const helpers = require('../../library/helpers'); |
11 | 11 | ||
12 | test('qiniu image url handle', t => { | 12 | test('qiniu image url handle', t => { |
@@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
2 | * logger 工具类测试 | 2 | * logger 工具类测试 |
3 | */ | 3 | */ |
4 | 4 | ||
5 | -const test = require('ava').test; | 5 | +const test = require('ava'); |
6 | const shelljs = require('shelljs'); | 6 | const shelljs = require('shelljs'); |
7 | const logger = require('../../library/logger'); | 7 | const logger = require('../../library/logger'); |
8 | 8 | ||
@@ -23,7 +23,7 @@ const logger = require('../../library/logger'); | @@ -23,7 +23,7 @@ const logger = require('../../library/logger'); | ||
23 | // }; | 23 | // }; |
24 | 24 | ||
25 | test.cb('logger test', t => { | 25 | test.cb('logger test', t => { |
26 | - shelljs.rm('-f', '*.log.*'); | 26 | + shelljs.rm('-f', 'log/*.log.*'); |
27 | logger.info('xxx', () => { | 27 | logger.info('xxx', () => { |
28 | shelljs.ls('info.log.*').forEach(s => console.log('generate log file:' + s)); | 28 | shelljs.ls('info.log.*').forEach(s => console.log('generate log file:' + s)); |
29 | t.end(); | 29 | t.end(); |
@@ -31,6 +31,6 @@ test.cb('logger test', t => { | @@ -31,6 +31,6 @@ test.cb('logger test', t => { | ||
31 | }); | 31 | }); |
32 | 32 | ||
33 | test.after('clean test log file ', t => { | 33 | test.after('clean test log file ', t => { |
34 | - shelljs.rm('-f', '*.log.*'); | 34 | + shelljs.rm('-f', 'log/*.log.*'); |
35 | t.pass(); | 35 | t.pass(); |
36 | }); | 36 | }); |
@@ -5,12 +5,12 @@ | @@ -5,12 +5,12 @@ | ||
5 | * @date: 2016/05/17 | 5 | * @date: 2016/05/17 |
6 | */ | 6 | */ |
7 | 7 | ||
8 | -const test = require('ava').test; | 8 | +const test = require('ava'); |
9 | const sign = require('../../library/sign'); | 9 | const sign = require('../../library/sign'); |
10 | 10 | ||
11 | test('app sign test', t => { | 11 | test('app sign test', t => { |
12 | let params = { | 12 | let params = { |
13 | - client_type: 'h5', | 13 | + client_type: 'h5', // eslint-disable-line |
14 | a: 1, | 14 | a: 1, |
15 | b: 'b' | 15 | b: 'b' |
16 | }; | 16 | }; |
@@ -5,7 +5,7 @@ | @@ -5,7 +5,7 @@ | ||
5 | * @date: 2016/05/17 | 5 | * @date: 2016/05/17 |
6 | */ | 6 | */ |
7 | 7 | ||
8 | -const test = require('ava').test; | 8 | +const test = require('ava'); |
9 | const Timer = require('../../library/timer'); | 9 | const Timer = require('../../library/timer'); |
10 | 10 | ||
11 | const sleep = (timeout) => { | 11 | const sleep = (timeout) => { |
-
Please register or login to post a comment