Skip to content

Commit 1c449ce

Browse files
committed
#21 move wechaty-hostie to wechaty-puppet-hostie
1 parent 86db3f4 commit 1c449ce

21 files changed

+123
-52
lines changed

pom.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
<modules>
1818
<module>wechaty</module>
1919
<module>wechaty-puppet</module>
20-
<module>wechaty-hostie</module>
20+
<module>wechaty-puppet-hostie</module>
2121
<module>wechaty-puppet-padplus</module>
2222
<module>report</module>
2323
</modules>
@@ -36,7 +36,7 @@
3636
</dependency>
3737
<dependency>
3838
<groupId>io.github.wechaty</groupId>
39-
<artifactId>wechaty-hostie_${scala-binary-version}</artifactId>
39+
<artifactId>wechaty-puppet-hostie_${scala-binary-version}</artifactId>
4040
<version>${project.version}</version>
4141
</dependency>
4242
<dependency>

report/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
</dependency>
1919
<dependency>
2020
<groupId>io.github.wechaty</groupId>
21-
<artifactId>wechaty-hostie_${scala-binary-version}</artifactId>
21+
<artifactId>wechaty-puppet-hostie_${scala-binary-version}</artifactId>
2222
</dependency>
2323
<dependency>
2424
<groupId>io.github.wechaty</groupId>

wechaty-hostie/pom.xml renamed to wechaty-puppet-hostie/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<version>0.0.12-SNAPSHOT</version>
88
</parent>
99
<modelVersion>4.0.0</modelVersion>
10-
<artifactId>wechaty-hostie_2.12</artifactId>
10+
<artifactId>wechaty-puppet-hostie_2.12</artifactId>
1111
<packaging>jar</packaging>
1212

1313

wechaty-puppet-padplus/src/main/scala/wechaty/padplus/support/ContactRawSupport.scala

+7-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
package wechaty.padplus.support
22

3+
import wechaty.padplus.grpc.PadPlusServerOuterClass.ApiType
34
import wechaty.puppet.ResourceBox
4-
import wechaty.puppet.schemas.Contact
5+
import wechaty.puppet.schemas.{Contact, Puppet}
56
import wechaty.puppet.support.ContactSupport
67

78
/**
@@ -29,5 +30,9 @@ trait ContactRawSupport {
2930
/**
3031
* contact
3132
*/
32-
override protected def contactRawPayload(contactId: String): Contact.ContactPayload = ???
33+
override protected def contactRawPayload(contactId: String): Contact.ContactPayload = {
34+
val json = Puppet.objectMapper.createObjectNode()
35+
json.put("userName",contactId)
36+
val response = request[](ApiType.GET_CONTACT,Some(json.toString))
37+
}
3338
}

wechaty-puppet-padplus/src/main/scala/wechaty/padplus/support/ContactSelfRawSupport.scala

+23-22
Original file line numberDiff line numberDiff line change
@@ -26,27 +26,28 @@ trait ContactSelfRawSupport {
2626

2727
override def logout(): Unit = ???
2828

29-
def contactSelfInfo(): PadplusContactPayload ={
30-
val contactPayload:GetContactSelfInfoGrpcResponse=requestForObject(ApiType.GET_CONTACT_SELF_INFO)
31-
val payload = new PadplusContactPayload
32-
payload.alias = contactPayload.alias;
33-
payload.bigHeadUrl = contactPayload.bigHeadImg;
34-
payload.city = contactPayload.city
35-
payload.contactFlag = 3
36-
payload.contactType = 0
37-
payload.country = contactPayload.country
38-
payload.nickName = contactPayload.nickName
39-
payload.province = contactPayload.province
40-
payload.remark = ""
41-
payload.sex = ContactGender(contactPayload.sex)
42-
payload.signature = contactPayload.signature
43-
payload.smallHeadUrl = contactPayload.smallHeadImg
44-
payload.stranger = ""
45-
payload.tagList = ""
46-
payload.ticket = ""
47-
payload.userName = contactPayload.userName
48-
payload.verifyFlag = 0
49-
50-
payload
29+
def contactSelfInfo(callback:PadplusContactPayload=>Unit):Unit={
30+
requestForCallback(ApiType.GET_CONTACT_SELF_INFO) {
31+
contactPayload: GetContactSelfInfoGrpcResponse =>
32+
val payload = new PadplusContactPayload
33+
payload.alias = contactPayload.alias;
34+
payload.bigHeadUrl = contactPayload.bigHeadImg;
35+
payload.city = contactPayload.city
36+
payload.contactFlag = 3
37+
payload.contactType = 0
38+
payload.country = contactPayload.country
39+
payload.nickName = contactPayload.nickName
40+
payload.province = contactPayload.province
41+
payload.remark = ""
42+
payload.sex = ContactGender(contactPayload.sex)
43+
payload.signature = contactPayload.signature
44+
payload.smallHeadUrl = contactPayload.smallHeadImg
45+
payload.stranger = ""
46+
payload.tagList = ""
47+
payload.ticket = ""
48+
payload.userName = contactPayload.userName
49+
payload.verifyFlag = 0
50+
callback(payload)
51+
}
5152
}
5253
}

wechaty-puppet-padplus/src/main/scala/wechaty/padplus/support/GrpcEventSupport.scala

+54-23
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ import io.grpc.stub.StreamObserver
1111
import javax.imageio.ImageIO
1212
import org.apache.commons.io.IOUtils
1313
import wechaty.padplus.PuppetPadplus
14-
import wechaty.padplus.grpc.PadPlusServerOuterClass.{ResponseType, StreamResponse}
15-
import wechaty.padplus.schemas.GrpcSchemas.GrpcMessagePayload
14+
import wechaty.padplus.grpc.PadPlusServerOuterClass.{ApiType, ResponseType, StreamResponse}
15+
import wechaty.padplus.schemas.GrpcSchemas.{GrpcMessagePayload, GrpcQrCodeLogin}
1616
import wechaty.padplus.schemas.ModelContact.PadplusContactPayload
1717
import wechaty.padplus.schemas.ModelUser.ScanData
1818
import wechaty.padplus.schemas.PadplusEnums.QrcodeStatus
@@ -78,29 +78,53 @@ trait GrpcEventSupport extends StreamObserver[StreamResponse]{
7878
eventMessagePayload.messageId = payload.MsgId
7979
saveRawMessagePayload(payload.MsgId,rawMessageStr)
8080
this.emit(PuppetEventName.MESSAGE, eventMessagePayload)
81+
case ResponseType.QRCODE_LOGIN =>
82+
val loginData = objectMapper.readValue(response.getData,classOf[GrpcQrCodeLogin])
83+
val padplusContactPayload=new PadplusContactPayload
84+
padplusContactPayload.alias=loginData.alias
85+
padplusContactPayload.bigHeadUrl=loginData.headImgUrl
86+
padplusContactPayload.nickName=loginData.nickName
87+
padplusContactPayload.sex=ContactGender.Unknown
88+
padplusContactPayload.userName=loginData.userName
89+
padplusContactPayload.verifyFlag=0
90+
saveRawContactPayload(padplusContactPayload.userName,padplusContactPayload)
91+
val eventLoginPayload = new EventLoginPayload
92+
eventLoginPayload.contactId = padplusContactPayload.userName
93+
emit(PuppetEventName.LOGIN, eventLoginPayload)
94+
request(ApiType.GET_CONTACT, )
95+
96+
8197
case ResponseType.AUTO_LOGIN =>
8298
logger.debug("response data:{}",response.getData)
8399
val autoLoginData = objectMapper.readTree(response.getData)
84-
val wechatUser = autoLoginData.get("wechatUser")
85-
86-
val rawContactPayload = new PadplusContactPayload
87-
if(wechatUser.has("alias"))
88-
rawContactPayload.alias=wechatUser.get("alias").asText("")
89-
rawContactPayload.bigHeadUrl = wechatUser.get("headImgUrl").asText()
90-
rawContactPayload.nickName = wechatUser.get("nickName").asText()
91-
rawContactPayload.sex = ContactGender.Unknown
92-
rawContactPayload.userName = wechatUser.get("userName").asText()
93-
saveRawContactPayload(rawContactPayload.userName,rawContactPayload)
94-
// "{\"uin\":1213374243,\"online\":true,\"wechatUser\":{\"headImgUrl\":\"http://wx.qlogo.cn/mmhead/ver_1/iag5D2R2U9ibgTW2eh7XUbPTHqpEMP2DhSpXSBeQYzEPWgEmLIx5IDibwicGh4fTh4IibkL4hNianoiaTzXmVORnm1O4ZjhxfPosKzkMPSwic8Iicylk/0\",\"nickName\":\"\351\230\277\350\224\241\",\"uin\":1213374243,\"userName\":\"wxid_gbk03zsepqny22\",\"alias\":\"\",\"verifyFlag\":0}}"
95-
selfId = Some(rawContactPayload.userName)
96-
97-
// val padplusContact = contactSelfInfo()
98-
// selfId = Some(padplusContact.userName)
99-
// logger.debug("contactSelf:{}",padplusContact)
100-
// saveRawContactPayload(padplusContact.userName,padplusContact)
101-
val eventLoginPayload = new EventLoginPayload
102-
eventLoginPayload.contactId = rawContactPayload.userName
103-
emit(PuppetEventName.LOGIN,eventLoginPayload)
100+
if(autoLoginData.get("online").asBoolean()) {
101+
val wechatUser = autoLoginData.get("wechatUser")
102+
103+
if (wechatUser != null) {
104+
val rawContactPayload = new PadplusContactPayload
105+
if (wechatUser.has("alias"))
106+
rawContactPayload.alias = wechatUser.get("alias").asText("")
107+
rawContactPayload.bigHeadUrl = wechatUser.get("headImgUrl").asText()
108+
rawContactPayload.nickName = wechatUser.get("nickName").asText()
109+
rawContactPayload.sex = ContactGender.Unknown
110+
rawContactPayload.userName = wechatUser.get("userName").asText()
111+
saveRawContactPayload(rawContactPayload.userName, rawContactPayload)
112+
// "{\"uin\":1213374243,\"online\":true,\"wechatUser\":{\"headImgUrl\":\"http://wx.qlogo.cn/mmhead/ver_1/iag5D2R2U9ibgTW2eh7XUbPTHqpEMP2DhSpXSBeQYzEPWgEmLIx5IDibwicGh4fTh4IibkL4hNianoiaTzXmVORnm1O4ZjhxfPosKzkMPSwic8Iicylk/0\",\"nickName\":\"\351\230\277\350\224\241\",\"uin\":1213374243,\"userName\":\"wxid_gbk03zsepqny22\",\"alias\":\"\",\"verifyFlag\":0}}"
113+
selfId = Some(rawContactPayload.userName)
114+
}
115+
116+
contactSelfInfo { padplusContact =>
117+
selfId = Some(padplusContact.userName)
118+
logger.debug("contactSelf:{}", padplusContact)
119+
saveRawContactPayload(padplusContact.userName, padplusContact)
120+
val eventLoginPayload = new EventLoginPayload
121+
eventLoginPayload.contactId = padplusContact.userName
122+
emit(PuppetEventName.LOGIN, eventLoginPayload)
123+
}
124+
}else{
125+
deleteUin()
126+
request(ApiType.GET_QRCODE)
127+
}
104128
case _ =>
105129
// val user = objectMapper.readTree(response.getData())
106130
// val userName = user.get("userName").asText()
@@ -116,7 +140,14 @@ trait GrpcEventSupport extends StreamObserver[StreamResponse]{
116140
case QrcodeStatus.Scanned =>
117141

118142
case QrcodeStatus.Confirmed =>
119-
143+
contactSelfInfo { padplusContact =>
144+
selfId = Some(padplusContact.userName)
145+
logger.debug("contactSelf:{}", padplusContact)
146+
saveRawContactPayload(padplusContact.userName, padplusContact)
147+
val eventLoginPayload = new EventLoginPayload
148+
eventLoginPayload.contactId = padplusContact.userName
149+
emit(PuppetEventName.LOGIN, eventLoginPayload)
150+
}
120151
case QrcodeStatus.Canceled | QrcodeStatus.Expired=>
121152

122153
}

wechaty-puppet-padplus/src/main/scala/wechaty/padplus/support/GrpcSupport.scala

+31
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,37 @@ trait GrpcSupport {
120120
val response = request(apiType,data)
121121
Puppet.objectMapper.readValue(response.getResult,classTag.runtimeClass).asInstanceOf[T]
122122
}
123+
protected def requestForCallback[T](apiType: ApiType,data:Option[Any]=None)(callback:T=>Unit)(implicit classTag: ClassTag[T]): ResponseObject ={
124+
val request = RequestObject.newBuilder()
125+
request.setToken(option.token.get)
126+
uinOpt match{
127+
case Some(id) =>
128+
request.setUin(id)
129+
case _ =>
130+
}
131+
request.setApiType(apiType)
132+
data match{
133+
case Some(str:String) =>
134+
request.setParams(str)
135+
case Some(d) =>
136+
request.setParams(Puppet.objectMapper.writeValueAsString(d))
137+
case _ =>
138+
}
139+
val requestId = UUID.randomUUID().toString
140+
request.setRequestId(requestId)
141+
val traceId= UUID.randomUUID().toString
142+
request.setTraceId(traceId)
143+
logger.debug("request:{}",request.build())
144+
val callbackDelegate=(streamResponse:StreamResponse)=>{
145+
val obj=Puppet.objectMapper.readValue(streamResponse.getData,classTag.runtimeClass).asInstanceOf[T]
146+
callback(obj)
147+
}
148+
//FIXME response timeout or not successful???
149+
callbackPool.put(traceId,callbackDelegate)
150+
val response = grpcClient.request(request.build())
151+
logger.debug("request->response:{}",response)
152+
response
153+
}
123154
protected def request(apiType: ApiType,data:Option[Any]=None): ResponseObject ={
124155
val request = RequestObject.newBuilder()
125156
request.setToken(option.token.get)

wechaty-puppet-padplus/src/main/scala/wechaty/padplus/support/LocalStoreSupport.scala

+3
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ trait LocalStoreSupport {
2626
protected def getUin: Option[String]={
2727
store.get(uinKey).map(_.toStringUtf8)
2828
}
29+
protected def deleteUin():Unit ={
30+
store.delete(uinKey)
31+
}
2932
protected def saveRawContactPayload(contactId:String,payload:PadplusContactPayload): Unit ={
3033
store.put(contactKeyFormat.format(contactId),objectMapper.writeValueAsString(payload))
3134
}

wechaty/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<dependencies>
1515
<dependency>
1616
<groupId>io.github.wechaty</groupId>
17-
<artifactId>wechaty-hostie_${scala-binary-version}</artifactId>
17+
<artifactId>wechaty-puppet-hostie_${scala-binary-version}</artifactId>
1818
</dependency>
1919
<dependency>
2020
<groupId>io.github.wechaty</groupId>

0 commit comments

Comments
 (0)