提交 30b0926f 编写于 作者: Huan (李卓桓)'s avatar Huan (李卓桓)

Schema Interface Rename

上级 517795c5
......@@ -39,8 +39,8 @@ import Profile from '../profile'
import Misc from '../misc'
import {
MediaData,
MsgRawObj,
MsgMediaPayload,
MsgRawPayload,
} from './schema'
import { PuppeteerContactRawObj } from './puppeteer-contact'
......@@ -595,7 +595,7 @@ export class Bridge extends EventEmitter {
}
}
public async sendMedia(mediaData: MediaData): Promise<boolean> {
public async sendMedia(mediaData: MsgMediaPayload): Promise<boolean> {
log.verbose('PuppetPuppeteerBridge', 'sendMedia(mediaData)')
if (!mediaData.ToUserName) {
......@@ -612,7 +612,7 @@ export class Bridge extends EventEmitter {
}
}
public async forward(baseData: MsgRawObj, patchData: MsgRawObj): Promise<boolean> {
public async forward(baseData: MsgRawPayload, patchData: MsgRawPayload): Promise<boolean> {
log.verbose('PuppetPuppeteerBridge', 'forward()')
if (!baseData.ToUserName) {
......
......@@ -34,8 +34,8 @@ import Firer from './firer'
import PuppetPuppeteer from './puppet-puppeteer'
import {
MsgType,
MsgRawObj,
} from './schema'
MsgRawPayload,
} from './schema'
/* tslint:disable:variable-name */
export const Event = {
......@@ -182,7 +182,7 @@ async function onLogout(
async function onMessage(
this: PuppetPuppeteer,
obj: MsgRawObj,
obj: MsgRawPayload,
): Promise<void> {
let m = new PuppeteerMessage(obj)
m.puppet = this
......
......@@ -50,8 +50,8 @@ import {
import Event from './event'
import {
MediaData,
MsgRawObj,
MsgMediaPayload,
MsgRawPayload,
MediaType,
MsgType,
} from './schema'
......@@ -320,7 +320,7 @@ export class PuppetPuppeteer extends Puppet {
}
}
private async uploadMedia(message: PuppeteerMessage, toUserName: string): Promise<MediaData> {
private async uploadMedia(message: PuppeteerMessage, toUserName: string): Promise<MsgMediaPayload> {
if (message.type() === PuppeteerMessage.Type.TEXT) {
throw new Error('require a Media Message')
}
......@@ -426,7 +426,7 @@ export class PuppetPuppeteer extends Puppet {
FileSize: size,
FileMd5: md5,
MMFileExt: ext,
} as MediaData
} as MsgMediaPayload
// If file size > 25M, must first call checkUpload to get Signature and AESKey, otherwise it will fail to upload
// https://github.com/Chatie/webwx-app-tracker/blob/7c59d35c6ea0cff38426a4c5c912a086c4c512b2/formatted/webwxApp.js#L1132 #1182
......@@ -556,8 +556,8 @@ export class PuppetPuppeteer extends Puppet {
destinationId = to.id
}
let mediaData: MediaData
const rawObj = message.rawObj || {} as MsgRawObj
let mediaData: MsgMediaPayload
const rawObj = message.rawObj || {} as MsgRawPayload
if (!rawObj || !rawObj.MediaId) {
try {
......@@ -607,7 +607,10 @@ export class PuppetPuppeteer extends Puppet {
* TODO: Test this function if it could work...
*/
// public async forward(baseData: MsgRawObj, patchData: MsgRawObj): Promise<boolean> {
public async forward(message: PuppeteerMessage, sendTo: PuppeteerContact | PuppeteerRoom): Promise<void> {
public async forward(
message: PuppeteerMessage,
sendTo: PuppeteerContact | PuppeteerRoom,
): Promise<void> {
log.silly('PuppetPuppeteer', 'forward() to: %s, message: %s)',
sendTo, message.filename(),
......@@ -620,7 +623,7 @@ export class PuppetPuppeteer extends Puppet {
}
let m = Object.assign({}, message.rawObj)
const newMsg = <MsgRawObj>{}
const newMsg = <MsgRawPayload>{}
const largeFileSize = 25 * 1024 * 1024
// let ret = false
// if you know roomId or userId, you can use `Room.load(roomId)` or `Contact.load(userId)`
......@@ -736,11 +739,6 @@ export class PuppetPuppeteer extends Puppet {
return
}
// const m = new Message()
// m.to('filehelper')
// m.text(content)
// return await this.send(m)
return await this.user.say(text)
}
......
......@@ -50,12 +50,11 @@ test('PuppetPuppeteerFriendRequest.receive smoke testing', async t => {
{"MsgId":"3225371967511173931","FromUserName":"fmessage","ToUserName":"@f7321198e0349f1b38c9f2ef158f70eb","MsgType":37,"Content":"&lt;msg fromusername=\\"wxid_a8d806dzznm822\\" encryptusername=\\"v1_c1e03a32c60dd9a9e14f1092132808a2de0ad363f79b303693654282954fbe4d3e12481166f4b841f28de3dd58b0bd54@stranger\\" fromnickname=\\"李卓桓.PreAngel\\" content=\\"我是群聊&amp;quot;Wechaty&amp;quot;的李卓桓.PreAngel\\" shortpy=\\"LZHPREANGEL\\" imagestatus=\\"3\\" scene=\\"14\\" country=\\"CN\\" province=\\"Beijing\\" city=\\"Haidian\\" sign=\\"投资人中最会飞的程序员。好友请加 918999 ,因为本号好友已满。\\" percard=\\"1\\" sex=\\"1\\" alias=\\"zixia008\\" weibo=\\"\\" weibonickname=\\"\\" albumflag=\\"0\\" albumstyle=\\"0\\" albumbgimgid=\\"911623988445184_911623988445184\\" snsflag=\\"49\\" snsbgimgid=\\"http://mmsns.qpic.cn/mmsns/zZSYtpeVianSQYekFNbuiajROicLficBzzeGuvQjnWdGDZ4budZovamibQnoKWba7D2LeuQRPffS8aeE/0\\" snsbgobjectid=\\"12183966160653848744\\" mhash=\\"\\" mfullhash=\\"\\" bigheadimgurl=\\"http://wx.qlogo.cn/mmhead/ver_1/xct7OPTbuU6iaS8gTaK2VibhRs3rATwnU1rCUwWu8ic89EGOynaic2Y4MUdKr66khhAplcfFlm7xbXhum5reania3fXDXH6CI9c3Bb4BODmYAh04/0\\" smallheadimgurl=\\"http://wx.qlogo.cn/mmhead/ver_1/xct7OPTbuU6iaS8gTaK2VibhRs3rATwnU1rCUwWu8ic89EGOynaic2Y4MUdKr66khhAplcfFlm7xbXhum5reania3fXDXH6CI9c3Bb4BODmYAh04/132\\" ticket=\\"v2_ba70dfbdb1b10168d61c1ab491be19e219db11ed5c28701f605efb4dccbf132f664d8a4c9ef6e852b2a4e8d8638be81d125c2e641f01903669539c53f1e582b2@stranger\\" opcode=\\"2\\" googlecontact=\\"\\" qrticket=\\"\\" chatroomusername=\\"2332413729@chatroom\\" sourceusername=\\"\\" sourcenickname=\\"\\"&gt;&lt;brandlist count=\\"0\\" ver=\\"670564024\\"&gt;&lt;/brandlist&gt;&lt;/msg&gt;","Status":3,"ImgStatus":1,"CreateTime":1475567560,"VoiceLength":0,"PlayLength":0,"FileName":"","FileSize":"","MediaId":"","Url":"","AppMsgType":0,"StatusNotifyCode":0,"StatusNotifyUserName":"","RecommendInfo":{"UserName":"@04a0fa314d0d8d50dc54e2ec908744ebf46b87404d143fd9a6692182dd90bd49","NickName":"李卓桓.PreAngel","Province":"北京","City":"海淀","Content":"我是群聊\\"Wechaty\\"的李卓桓.PreAngel","Signature":"投资人中最会飞的程序员。好友请加 918999 ,因为本号好友已满。","Alias":"zixia008","Scene":14,"AttrStatus":233251,"Sex":1,"Ticket":"v2_ba70dfbdb1b10168d61c1ab491be19e219db11ed5c28701f605efb4dccbf132f664d8a4c9ef6e852b2a4e8d8638be81d125c2e641f01903669539c53f1e582b2@stranger","OpCode":2,"HeadImgUrl":"/cgi-bin/mmwebwx-bin/webwxgeticon?seq=0&username=@04a0fa314d0d8d50dc54e2ec908744ebf46b87404d143fd9a6692182dd90bd49&skey=@crypt_f9cec94b_5b073dca472bd5e41771d309bb8c37bd&msgid=3225371967511173931","MMFromVerifyMsg":true},"ForwardFlag":0,"AppInfo":{"AppID":"","Type":0},"HasProductId":0,"Ticket":"","ImgHeight":0,"ImgWidth":0,"SubMsgType":0,"NewMsgId":3225371967511174000,"MMPeerUserName":"fmessage","MMDigest":"李卓桓.PreAngel想要将你加为朋友","MMIsSend":false,"MMIsChatRoom":false,"MMUnread":true,"LocalID":"3225371967511173931","ClientMsgId":"3225371967511173931","MMActualContent":"&lt;msg fromusername=\\"wxid_a8d806dzznm822\\" encryptusername=\\"v1_c1e03a32c60dd9a9e14f1092132808a2de0ad363f79b303693654282954fbe4d3e12481166f4b841f28de3dd58b0bd54@stranger\\" fromnickname=\\"李卓桓.PreAngel\\" content=\\"我是群聊&amp;quot;Wechaty&amp;quot;的李卓桓.PreAngel\\" shortpy=\\"LZHPREANGEL\\" imagestatus=\\"3\\" scene=\\"14\\" country=\\"CN\\" province=\\"Beijing\\" city=\\"Haidian\\" sign=\\"投资人中最会飞的程序员。好友请加 918999 ,因为本号好友已满。\\" percard=\\"1\\" sex=\\"1\\" alias=\\"zixia008\\" weibo=\\"\\" weibonickname=\\"\\" albumflag=\\"0\\" albumstyle=\\"0\\" albumbgimgid=\\"911623988445184_911623988445184\\" snsflag=\\"49\\" snsbgimgid=\\"http://mmsns.qpic.cn/mmsns/zZSYtpeVianSQYekFNbuiajROicLficBzzeGuvQjnWdGDZ4budZovamibQnoKWba7D2LeuQRPffS8aeE/0\\" snsbgobjectid=\\"12183966160653848744\\" mhash=\\"\\" mfullhash=\\"\\" bigheadimgurl=\\"http://wx.qlogo.cn/mmhead/ver_1/xct7OPTbuU6iaS8gTaK2VibhRs3rATwnU1rCUwWu8ic89EGOynaic2Y4MUdKr66khhAplcfFlm7xbXhum5reania3fXDXH6CI9c3Bb4BODmYAh04/0\\" smallheadimgurl=\\"http://wx.qlogo.cn/mmhead/ver_1/xct7OPTbuU6iaS8gTaK2VibhRs3rATwnU1rCUwWu8ic89EGOynaic2Y4MUdKr66khhAplcfFlm7xbXhum5reania3fXDXH6CI9c3Bb4BODmYAh04/132\\" ticket=\\"v2_ba70dfbdb1b10168d61c1ab491be19e219db11ed5c28701f605efb4dccbf132f664d8a4c9ef6e852b2a4e8d8638be81d125c2e641f01903669539c53f1e582b2@stranger\\" opcode=\\"2\\" googlecontact=\\"\\" qrticket=\\"\\" chatroomusername=\\"2332413729@chatroom\\" sourceusername=\\"\\" sourcenickname=\\"\\"&gt;&lt;brandlist count=\\"0\\" ver=\\"670564024\\"&gt;&lt;/brandlist&gt;&lt;/msg&gt;","MMActualSender":"fmessage","MMDigestTime":"15:52","MMDisplayTime":1475567560,"MMTime":"15:52"}
`
const rawObj = JSON.parse(rawMessageData)
// const m = new Message(rawObj)
const fr = new MyFriendRequest()
fr.receive(rawObj.RecommendInfo)
t.true(typeof fr.info === 'object', 'should has info object')
t.true(typeof fr.payload === 'object', 'should has info object')
t.is(fr.hello, '我是群聊"Wechaty"的李卓桓.PreAngel', 'should has right request message')
t.true(fr.contact instanceof PuppeteerContact, 'should have a Contact instance')
t.is(fr.type as any, 'receive', 'should be receive type')
......
......@@ -39,8 +39,8 @@ import PuppeteerRoom from './puppeteer-room'
import {
AppMsgType,
MsgObj,
MsgRawObj,
MsgPayload,
MsgRawPayload,
MsgType,
} from './schema'
......@@ -66,8 +66,8 @@ export class PuppeteerMessage extends Message {
/**
* @private
*/
public obj: MsgObj
public rawObj?: MsgRawObj
public obj: MsgPayload
public rawObj?: MsgRawPayload
private parsedPath?: ParsedPath
......@@ -75,12 +75,12 @@ export class PuppeteerMessage extends Message {
* @private
*/
constructor(
fileOrObj?: string | MsgRawObj,
fileOrObj?: string | MsgRawPayload,
) {
super()
log.silly('PuppeteerMessage', 'constructor()')
this.obj = {} as MsgObj
this.obj = {} as MsgPayload
// this.rawObj = {} as MsgRawObj
if (!fileOrObj) {
......@@ -102,8 +102,8 @@ export class PuppeteerMessage extends Message {
* @private
*/
// Transform rawObj to local obj
private parse(rawObj: MsgRawObj): MsgObj {
const obj: MsgObj = {
private parse(rawObj: MsgRawPayload): MsgPayload {
const obj: MsgPayload = {
id: rawObj.MsgId,
type: rawObj.MsgType,
from: rawObj.MMActualSender, // MMPeerUserName
......@@ -675,7 +675,7 @@ export class PuppeteerMessage extends Message {
*/
public dump() {
console.error('======= dump message =======')
Object.keys(this.obj!).forEach((k: keyof MsgObj) => console.error(`${k}: ${this.obj![k]}`))
Object.keys(this.obj!).forEach((k: keyof MsgPayload) => console.error(`${k}: ${this.obj![k]}`))
}
/**
......@@ -686,14 +686,14 @@ export class PuppeteerMessage extends Message {
if (!this.rawObj) {
throw new Error('no this.rawObj')
}
Object.keys(this.rawObj).forEach((k: keyof MsgRawObj) => console.error(`${k}: ${this.rawObj && this.rawObj[k]}`))
Object.keys(this.rawObj).forEach((k: keyof MsgRawPayload) => console.error(`${k}: ${this.rawObj && this.rawObj[k]}`))
}
/**
* @todo add function
*/
public static async find(query: any) {
return Promise.resolve(new PuppeteerMessage(<MsgRawObj>{MsgId: '-1'}))
return Promise.resolve(new PuppeteerMessage(<MsgRawPayload>{MsgId: '-1'}))
}
/**
......@@ -701,8 +701,8 @@ export class PuppeteerMessage extends Message {
*/
public static async findAll(query: any) {
return Promise.resolve([
new PuppeteerMessage (<MsgRawObj>{MsgId: '-2'}),
new PuppeteerMessage (<MsgRawObj>{MsgId: '-3'}),
new PuppeteerMessage (<MsgRawPayload>{MsgId: '-2'}),
new PuppeteerMessage (<MsgRawPayload>{MsgId: '-3'}),
])
}
......
......@@ -16,7 +16,7 @@
* limitations under the License.
*
*/
export interface MediaData {
export interface MsgMediaPayload {
ToUserName: string,
MsgType: number,
MediaId: string,
......@@ -28,7 +28,7 @@ export interface MediaData {
Signature?: string,
}
export interface MsgRawObj {
export interface MsgRawPayload {
MsgId: string,
MMActualSender: string, // getUserContact(message.MMActualSender,message.MMPeerUserName).isContact()
......@@ -127,7 +127,7 @@ export interface MsgRawObj {
* MsgType == CONF.MSGTYPE_SHARECARD" ng-click="showProfile($event,message.RecommendInfo.UserName)
* MsgType == CONF.MSGTYPE_VERIFYMSG
*/
RecommendInfo?: RecommendInfo,
RecommendInfo?: RecommendPayload,
/**
* Transpond Message
......@@ -141,7 +141,7 @@ export interface MsgRawObj {
}
export interface MsgObj {
export interface MsgPayload {
id: string,
type: MsgType,
from: string,
......@@ -161,7 +161,7 @@ export interface MsgObj {
// export type MessageTypeValue = 1 | 3 | 34 | 37 | 40 | 42 | 43 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 62 | 9999 | 10000 | 10002
export interface MsgTypeMap {
export interface MsgTypeDict {
[index: string]: string|number,
// MessageTypeName: MessageTypeValue
// , MessageTypeValue: MessageTypeName
......@@ -257,7 +257,7 @@ export enum MsgType {
/**
* from Message
*/
export interface RecommendInfo {
export interface RecommendPayload {
UserName: string,
NickName: string, // display_name
Content: string, // request message
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册