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
use bytes::Bytes;
use crate::command::common::PbToBytes;
use crate::RQResult;
use crate::{pb, RQError};
impl super::super::super::Engine {
pub fn decode_group_try_up_ptt_resp(&self, payload: Bytes) -> RQResult<Vec<u8>> {
let mut rsp = pb::cmd0x388::D388RspBody::from_bytes(&payload)
.map_err(|_| RQError::Decode("D388RspBody".into()))?;
let ptt = rsp
.tryup_ptt_rsp
.pop()
.ok_or_else(|| RQError::Other("tryup_ptt_rsp is empty".into()))?;
ptt.file_key
.ok_or_else(|| RQError::Other("ptt_store file_key is empty".into()))
}
pub fn decode_friend_try_up_ptt_resp(&self, payload: Bytes) -> RQResult<Vec<u8>> {
pb::cmd0x346::C346RspBody::from_bytes(&payload)
.map_err(|_| RQError::Decode("C346RspBody".into()))?
.apply_upload_rsp
.map(|r| r.uuid)
.ok_or_else(|| RQError::Other("apply_upload_rsp is none".into()))
}
pub fn decode_group_ptt_down(&self, payload: Bytes) -> RQResult<String> {
let mut rsp = pb::cmd0x388::D388RspBody::from_bytes(&payload)
.map_err(|_| RQError::Decode("D388RspBody".into()))?;
let ptt = rsp
.getptt_url_rsp
.pop()
.ok_or_else(|| RQError::Other("getptt_url_rsp is empty".into()))?;
Ok(format!(
"http://{}{}",
ptt.domain
.ok_or_else(|| RQError::Other("ptt_domain is none".into()))?,
String::from_utf8_lossy(
&ptt.down_para
.ok_or_else(|| RQError::Other("ptt_down_para is none".into()))?
)
))
}
}