New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

koa2wechat

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

koa2wechat - npm Package Compare versions

Comparing version 1.0.1 to 1.0.2

lib/wechat/Reply.js

38

lib/handler/defaultHandler.js

@@ -7,15 +7,35 @@ 'use strict';

var _templates = require('../xml/templates');
var _index = require('../index');
// return a Promise
// ReplyBuilder是一个类,用于创建各类返回信息,生成对应的xml字符串
var welcomeMsg = 'hello from koa2wechat';
// 返回一个Promise对象
var defaultHandler = function defaultHandler(xml) {
// default
var rpl = {};
rpl.ToUserName = xml.FromUserName;
rpl.FromUserName = xml.ToUserName;
rpl.Content = 'Hello from koa2wechat';
rpl.CreateTime = new Date().getTime();
return Promise.resolve((0, _templates.textTpl)(rpl));
// 获取来源FromUserName,在回复信息中将其设置为目的地 `to`
// 获取我们公众号的标识ToUserName,在回复信息中将其设置为发送地 `from`
var FromUserName = xml.FromUserName;
var ToUserName = xml.ToUserName;
// 这里可以插入需要执行的业务逻辑代码,比如判断消息来源是谁,他回复了什么类型的数据之类的
// 实例化builder
var replyBuilder = new _index.ReplyBuilder();
// 生成回复将会使用到的meta信息,包括 本机`from`, 目标`to`, 时间戳`ts`(时间戳非必选项)
var meta = { from: ToUserName, to: FromUserName, ts: new Date().getTime() };
// 回复文本类型的数据,要构造选项`type` 和 回复内容`content` 以及上面获取的 meta 信息
var textRpl = {
meta: meta,
type: "text",
content: welcomeMsg
};
// 传入回复选项,生成相应的xml字符串
var rpl = replyBuilder.genXML(textRpl);
// 把Promise 返回回去
return Promise.resolve(rpl);
};
exports.default = defaultHandler;
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
value: true
});

@@ -14,23 +14,48 @@ exports.handler = undefined;

// return Promise
/**
* 示例 handler
* @param {obj} xml , 根据微信服务器推送的xml数据转化的Object,譬如,
* 当接收到文本信息的时候,xml为:
* {
* ToUserName:"",
* FromUserName:"",
* CreateTime:12345678,
* MsgType:"text",
* Content:"this is a test",
* MsgId:1234567890123456
* }
* 接收到图片信息的时候为:
* {
* ToUserName:"",
* FromUserName:"",
* CreateTime:12345678,
* MsgType:"image",
* PicUrl:"",
* MediaId:"",
* MsgId:1234567890123456
* }
* 其他类型同理,具体信息参考 http://mp.weixin.qq.com/wiki/17/f298879f8fb29ab98b2f2971d42552fd.html
* @return {Promise} [一定记得返回Promise对象]
*/
var handler = function handler(xml) {
var MsgType = xml.MsgType;
var MsgType = xml.MsgType;
if (!MsgType) return;
// more about MsgType: http://mp.weixin.qq.com/wiki/17/f298879f8fb29ab98b2f2971d42552fd.html
switch (MsgType) {
// when client subscribe,case 'event' occurs
case 'event':
case 'text':
case 'image':
case 'voice':
case 'video':
case 'shortvideo':
case 'location':
case 'link':
default:
return (0, _defaultHandler2.default)(xml);
}
if (!MsgType) return;
// more about MsgType: http://mp.weixin.qq.com/wiki/17/f298879f8fb29ab98b2f2971d42552fd.html
switch (MsgType) {
// 订阅的时候会触发'event'
case 'event':
case 'text':
case 'image':
case 'voice':
case 'video':
case 'shortvideo':
case 'location':
case 'link':
default:
// 这里的defaultHandler是一个Promise对象
return (0, _defaultHandler2.default)(xml);
}
};
exports.handler = handler;
exports.default = handler;
'use strict';
require('babel-polyfill');
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.wTpls = exports.wLoader = exports.Wechat = undefined;
exports.ReplyBuilder = exports.wLoader = exports.Wechat = undefined;

@@ -16,5 +16,5 @@ var _Loader = require('./wechat/Loader');

var _templates = require('./xml/templates');
var _Reply = require('./wechat/Reply');
var _templates2 = _interopRequireDefault(_templates);
var _Reply2 = _interopRequireDefault(_Reply);

@@ -25,7 +25,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

exports.wLoader = _Loader2.default;
exports.wTpls = _templates2.default;
exports.ReplyBuilder = _Reply2.default;
exports.default = {
Wechat: _Wechat2.default,
wLoader: _Loader2.default,
wTpls: _templates2.default
ReplyBuilder: _Reply2.default
};

@@ -6,3 +6,3 @@ 'use strict';

});
exports.newsTpl = exports.musicTpl = exports.voiceTpl = exports.imageTpl = exports.videoTpl = exports.textTpl = undefined;
exports.newsItemTpl = exports.newsTpl = exports.musicTpl = exports.voiceTpl = exports.imageTpl = exports.videoTpl = exports.textTpl = undefined;

@@ -33,2 +33,6 @@ var _textTpl = require('./templates/textTpl');

var _newsItemTpl = require('./templates/newsItemTpl');
var _newsItemTpl2 = _interopRequireDefault(_newsItemTpl);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -42,3 +46,4 @@

musicTpl: _musicTpl2.default,
newsTpl: _newsTpl2.default
newsTpl: _newsTpl2.default,
newsItemTpl: _newsItemTpl2.default
};

@@ -52,2 +57,3 @@

exports.newsTpl = _newsTpl2.default;
exports.newsItemTpl = _newsItemTpl2.default;
exports.default = wTpls;

@@ -7,8 +7,8 @@ "use strict";

var imageTpl = function imageTpl(msg) {
var ToUserName = msg.ToUserName;
var FromUserName = msg.FromUserName;
var CreateTime = msg.CreateTime;
var MediaId = msg.MediaId;
var ToUserName = msg.to;
var FromUserName = msg.from;
var CreateTime = msg.ts;
var MediaId = msg.mediaId;
var retStr = "<xml>\n\t<ToUserName><![CDATA[" + ToUserName + "]]></ToUserName>\n\t<FromUserName><![CDATA[" + FromUserName + "]]></FromUserName>\n\t<CreateTime>" + CreateTime + "</CreateTime>\n\t<MsgType><![CDATA[image]]></MsgType>\n\t<Image>\n\t<MediaId><![CDATA[" + MediaId + "]]></MediaId>\n\t</Image>\n\t</xml>";
var retStr = "<xml>\n<ToUserName><![CDATA[" + ToUserName + "]]></ToUserName>\n<FromUserName><![CDATA[" + FromUserName + "]]></FromUserName>\n<CreateTime>" + CreateTime + "</CreateTime>\n<MsgType><![CDATA[image]]></MsgType>\n<Image>\n<MediaId><![CDATA[" + MediaId + "]]></MediaId>\n</Image>\n</xml>";
return retStr;

@@ -15,0 +15,0 @@ };

@@ -7,13 +7,13 @@ "use strict";

var musicTpl = function musicTpl(msg) {
var ToUserName = msg.ToUserName;
var FromUserName = msg.FromUserName;
var CreateTime = msg.CreateTime;
var MediaId = msg.MediaId;
var Title = msg.Title;
var Description = msg.Description;
var MusicUrl = msg.MusicUrl;
var HQMusicUrl = msg.HQMusicUrl;
var ThumbMediaId = msg.ThumbMediaId;
var ToUserName = msg.to;
var FromUserName = msg.from;
var CreateTime = msg.ts;
var MediaId = msg.mediaId;
var Title = msg.title;
var Description = msg.desc;
var MusicUrl = msg.musicUrl;
var HQMusicUrl = msg.HQUrl;
var ThumbMediaId = msg.thumb;
var retStr = "<xml>\n\t<ToUserName><![CDATA[" + ToUserName + "]]></ToUserName>\n\t<FromUserName><![CDATA[" + FromUserName + "]]></FromUserName>\n\t<CreateTime>" + CreateTime + "</CreateTime>\n\t<MsgType><![CDATA[music]]></MsgType>\n\t<Music>\n\t<Title><![CDATA[" + Title + "]]></Title>\n\t<Description><![CDATA[" + Description + "]]></Description>\n\t<MusicUrl><![CDATA[" + MusicUrl + "]]></MusicUrl>\n\t<HQMusicUrl><![CDATA[" + HQMusicUrl + "]]></HQMusicUrl>\n\t<ThumbMediaId><![CDATA[" + ThumbMediaId + "]]></ThumbMediaId>\n\t</Music>\n\t</xml>";
var retStr = "<xml>\n<ToUserName><![CDATA[" + ToUserName + "]]></ToUserName>\n<FromUserName><![CDATA[" + FromUserName + "]]></FromUserName>\n<CreateTime>" + CreateTime + "</CreateTime>\n<MsgType><![CDATA[music]]></MsgType>\n<Music>\n<Title><![CDATA[" + Title + "]]></Title>\n<Description><![CDATA[" + Description + "]]></Description>\n<MusicUrl><![CDATA[" + MusicUrl + "]]></MusicUrl>\n<HQMusicUrl><![CDATA[" + HQMusicUrl + "]]></HQMusicUrl>\n<ThumbMediaId><![CDATA[" + ThumbMediaId + "]]></ThumbMediaId>\n</Music>\n</xml>";
return retStr;

@@ -20,0 +20,0 @@ };

@@ -1,69 +0,43 @@

'use strict';
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
value: true
});
// `<xml>
// <ToUserName><![CDATA[toUser]]></ToUserName>
// <FromUserName><![CDATA[fromUser]]></FromUserName>
// <CreateTime>12345678</CreateTime>
// <MsgType><![CDATA[news]]></MsgType>
// <ArticleCount>2</ArticleCount>
// <Articles>
// <item>
// <Title><![CDATA[title1]]></Title>
// <Description><![CDATA[description1]]></Description>
// <PicUrl><![CDATA[picurl]]></PicUrl>
// <Url><![CDATA[url]]></Url>
// </item>
// <item>
// <Title><![CDATA[title]]></Title>
// <Description><![CDATA[description]]></Description>
// <PicUrl><![CDATA[picurl]]></PicUrl>
// <Url><![CDATA[url]]></Url>
// </item>
// </Articles>
// </xml> `
// *
// * news template
// * @param {Obj} msg ,for example:
// * {
// * ToUserName:"ToUserName",
// * FromUserName:"FromUserName",
// * CreateTime:12345678,
// * Articles:[
// * {
// *
// * },
// *
// * ]
// *
// * }
// *
// * @return {[type]} [description]
var _newsItemTpl = require("./newsItemTpl");
// let newsTpl = (msg)=>{
// let{
// ToUserName,
// FromUserName,
// CreateTime,
// } = msg
// let retStr =
// `<xml>
// <ToUserName><![CDATA[${ToUserName}]]></ToUserName>
// <FromUserName><![CDATA[${FromUserName}]]></FromUserName>
// <CreateTime>${CreateTime}</CreateTime>
// <MsgType><![CDATA[video]]></MsgType>
// <Video>
// <MediaId><![CDATA[${MediaId}]]></MediaId>
// <Title><![CDATA[${Title}]]></Title>
// <Description><![CDATA[${Description}]]></Description>
// </Video>
// </xml>`
// return retStr
// }
var _newsItemTpl2 = _interopRequireDefault(_newsItemTpl);
var newsTpl = '';
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var newsTpl = function newsTpl(msg) {
var ToUserName = msg.to;
var FromUserName = msg.from;
var CreateTime = msg.ts;
var articles = msg.articles;
// get head
var head = "<xml>\n<ToUserName><![CDATA[" + ToUserName + "]]></ToUserName>\n<FromUserName><![CDATA[" + FromUserName + "]]></FromUserName>\n<CreateTime>" + CreateTime + "</CreateTime>\n<MsgType><![CDATA[news]]></MsgType>\n<ArticleCount>" + articles.length + "</ArticleCount>\n<Articles>";
// get body
var items = [];
articles.forEach(function (article) {
var _article$title = article.title;
var title = _article$title === undefined ? "" : _article$title;
var _article$desc = article.desc;
var desc = _article$desc === undefined ? "" : _article$desc;
var _article$picUrl = article.picUrl;
var picUrl = _article$picUrl === undefined ? "" : _article$picUrl;
var _article$url = article.url;
var url = _article$url === undefined ? "" : _article$url;
items.push((0, _newsItemTpl2.default)(article));
});
var body = items.join('\n');
// get foot
var foot = "</Articles>\n</xml>";
return [head, body, foot].join('\n');
};
exports.default = newsTpl;

@@ -1,2 +0,2 @@

"use strict";
'use strict';

@@ -7,8 +7,9 @@ Object.defineProperty(exports, "__esModule", {

var textTpl = function textTpl(msg) {
var ToUserName = msg.ToUserName;
var FromUserName = msg.FromUserName;
var CreateTime = msg.CreateTime;
var Content = msg.Content;
var ToUserName = msg.to;
var FromUserName = msg.from;
var CreateTime = msg.ts;
var Content = msg.content;
var retStr = "<xml>\n\t<ToUserName><![CDATA[" + ToUserName + "]]></ToUserName>\n\t<FromUserName><![CDATA[" + FromUserName + "]]></FromUserName>\n\t<CreateTime>" + CreateTime + "</CreateTime>\n\t<MsgType><![CDATA[text]]></MsgType>\n\t<Content><![CDATA[" + Content + "]]></Content>\n\t</xml>";
if (!ToUserName || !FromUserName || !CreateTime || !Content) return '';
var retStr = '<xml>\n<ToUserName><![CDATA[' + ToUserName + ']]></ToUserName>\n<FromUserName><![CDATA[' + FromUserName + ']]></FromUserName>\n<CreateTime>' + CreateTime + '</CreateTime>\n<MsgType><![CDATA[text]]></MsgType>\n<Content><![CDATA[' + Content + ']]></Content>\n</xml>';
return retStr;

@@ -15,0 +16,0 @@ };

@@ -7,8 +7,8 @@ "use strict";

var videoTpl = function videoTpl(msg) {
var ToUserName = msg.ToUserName;
var FromUserName = msg.FromUserName;
var CreateTime = msg.CreateTime;
var MediaId = msg.MediaId;
var Title = msg.Title;
var Description = msg.Description;
var ToUserName = msg.to;
var FromUserName = msg.from;
var CreateTime = msg.ts;
var MediaId = msg.mediaId;
var Title = msg.title;
var Description = msg.desc;

@@ -15,0 +15,0 @@ var retStr = "<xml>\n\t<ToUserName><![CDATA[" + ToUserName + "]]></ToUserName>\n\t<FromUserName><![CDATA[" + FromUserName + "]]></FromUserName>\n\t<CreateTime>" + CreateTime + "</CreateTime>\n\t<MsgType><![CDATA[video]]></MsgType>\n\t<Video>\n\t<MediaId><![CDATA[" + MediaId + "]]></MediaId>\n\t<Title><![CDATA[" + Title + "]]></Title>\n\t<Description><![CDATA[" + Description + "]]></Description>\n\t</Video> \n\t</xml>";

@@ -7,8 +7,8 @@ "use strict";

var voiceTpl = function voiceTpl(msg) {
var ToUserName = msg.ToUserName;
var FromUserName = msg.FromUserName;
var CreateTime = msg.CreateTime;
var MediaId = msg.MediaId;
var ToUserName = msg.to;
var FromUserName = msg.from;
var CreateTime = msg.ts;
var MediaId = msg.mediaId;
var retStr = "<xml>\n\t<ToUserName><![CDATA[" + ToUserName + "]]></ToUserName>\n\t<FromUserName><![CDATA[" + FromUserName + "]]></FromUserName>\n\t<CreateTime>" + CreateTime + "</CreateTime>\n\t<MsgType><![CDATA[voice]]></MsgType>\n\t<Voice>\n\t<MediaId><![CDATA[" + MediaId + "]]></MediaId>\n\t</Voice>\n\t</xml>";
var retStr = "<xml>\n<ToUserName><![CDATA[" + ToUserName + "]]></ToUserName>\n<FromUserName><![CDATA[" + FromUserName + "]]></FromUserName>\n<CreateTime>" + CreateTime + "</CreateTime>\n<MsgType><![CDATA[voice]]></MsgType>\n<Voice>\n<MediaId><![CDATA[" + MediaId + "]]></MediaId>\n</Voice>\n</xml>";
return retStr;

@@ -15,0 +15,0 @@ };

{
"name": "koa2wechat",
"version": "1.0.1",
"version": "1.0.2",
"description": "simple wechat backend based on koa2",
"main": "src/index.js",
"main": "lib/index.js",
"repository": {

@@ -11,4 +11,4 @@ "type": "git",

"scripts": {
"server":"babel-node ./server.js",
"compile":"babel src/ -d lib/ --source-map both",
"server": "babel-node ./server.js",
"compile": "babel src/ -d lib/ --source-map both",
"test": "mocha --opts ./test/mocha.opts",

@@ -34,2 +34,3 @@ "test-cov": "istanbul cover _mocha -- --opts ./test/mocha.opts"

"babel-core": "^6.14.0",
"babel-polyfill": "^6.13.0",
"babel-preset-es2015": "^6.14.0",

@@ -36,0 +37,0 @@ "babel-preset-stage-3": "^6.11.0",

@@ -1,1 +0,1 @@

{"access_token":"FdfcYWsABXn0vgxpsGXTS95NB4Fk4UnFeYZ9rJpRf89Q3SlbdqyKT4aDvN0pLz9mQy_HVahxyj-nGSwClDrSS40CZeM-xU05XTmzYxGqoBsVJAcAFAJXO","expires_in":1473811415677}
{"access_token":"HlxoBkrQIb34KdnzuEWwzay-Sty3QOzEwCBTjtVpJOoD9bTcYqkAkjnlC-tHTvZL-UHxsCR9y4jEmJS9zuETToBcJ7BegG-pwcQJe56f7YKj3tKbZQGrJyYYnXi8yp93QMLiAJABXW","expires_in":1473821800319}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc