@@ -11,8 +11,8 @@ import io.grpc.stub.StreamObserver
11
11
import javax .imageio .ImageIO
12
12
import org .apache .commons .io .IOUtils
13
13
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 }
16
16
import wechaty .padplus .schemas .ModelContact .PadplusContactPayload
17
17
import wechaty .padplus .schemas .ModelUser .ScanData
18
18
import wechaty .padplus .schemas .PadplusEnums .QrcodeStatus
@@ -78,29 +78,53 @@ trait GrpcEventSupport extends StreamObserver[StreamResponse]{
78
78
eventMessagePayload.messageId = payload.MsgId
79
79
saveRawMessagePayload(payload.MsgId ,rawMessageStr)
80
80
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
+
81
97
case ResponseType .AUTO_LOGIN =>
82
98
logger.debug(" response data:{}" ,response.getData)
83
99
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
+ }
104
128
case _ =>
105
129
// val user = objectMapper.readTree(response.getData())
106
130
// val userName = user.get("userName").asText()
@@ -116,7 +140,14 @@ trait GrpcEventSupport extends StreamObserver[StreamResponse]{
116
140
case QrcodeStatus .Scanned =>
117
141
118
142
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
+ }
120
151
case QrcodeStatus .Canceled | QrcodeStatus .Expired =>
121
152
122
153
}
0 commit comments