1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
use std::collections::HashMap;
use bytes::{BufMut, Bytes, BytesMut};
use jcers::JcePut;
use crate::command::common::{pack_uni_request_data, PbToBytes};
use crate::protocol::packet::*;
use crate::{jce, pb};
impl super::super::super::Engine {
pub fn build_summary_card_request_packet(&self, target: i64) -> Packet {
let seq = self.next_seq();
let gate = pb::profilecard::GateVaProfileGateReq {
u_cmd: Some(3),
st_privilege_req: Some(pb::profilecard::GatePrivilegeBaseInfoReq {
u_req_uin: Some(target),
}),
st_gift_req: Some(pb::profilecard::GateGetGiftListReq {
uin: Some(target as i32),
}),
st_vip_care: Some(pb::profilecard::GateGetVipCareReq { uin: Some(target) }),
oidb_flag: vec![
pb::profilecard::GateOidbFlagInfo {
fieled: Some(42334),
byets_value: None,
},
pb::profilecard::GateOidbFlagInfo {
fieled: Some(42340),
byets_value: None,
},
pb::profilecard::GateOidbFlagInfo {
fieled: Some(42344),
byets_value: None,
},
pb::profilecard::GateOidbFlagInfo {
fieled: Some(42354),
byets_value: None,
},
],
..Default::default()
}
.to_bytes();
let business_buf = {
let mut w = BytesMut::new();
let comm = pb::profilecard::BusiComm {
ver: Some(1),
seq: Some(seq as i32),
fromuin: Some(self.uin()),
touin: Some(target),
service: Some(16),
platform: Some(2),
qqver: Some(self.transport.version.build_ver.into()),
build: Some(4945),
..Default::default()
}
.to_bytes();
w.put_u8(40);
w.put_u32(comm.len() as u32);
w.put_u32(gate.len() as u32);
w.put_slice(&comm);
w.put_slice(&gate);
w.put_u8(42);
w.freeze()
};
let req = jce::SummaryCardReq {
uin: target,
come_from: 31,
get_control: 69181,
add_friend_source: 3001,
secure_sig: Bytes::from(vec![0]),
req_medal_wall_info: 0,
req_0x5eb_field_id: vec![
27225, 27224, 42122, 42121, 27236, 27238, 42167, 42172, 40324, 42284, 42326, 42325,
42356, 42363, 42361, 42367, 42377, 42425, 42505, 42488,
],
req_services: vec![business_buf],
req_nearby_god_info: 1,
req_extend_card: 1,
..Default::default()
};
let mut head = jcers::JceMut::new();
head.put_i32(2, 0);
let buf = jce::RequestDataVersion3 {
map: HashMap::from([
("ReqHead".to_string(), pack_uni_request_data(&head.freeze())),
(
"ReqSummaryCard".to_string(),
pack_uni_request_data(&req.freeze()),
),
]),
};
let pkt = jce::RequestPacket {
i_version: 3,
s_servant_name: "SummaryCardServantObj".to_string(),
s_func_name: "ReqSummaryCard".to_string(),
s_buffer: buf.freeze(),
..Default::default()
};
self.uni_packet("SummaryCard.ReqSummaryCard", pkt.freeze())
}
}