diff options
Diffstat (limited to 'protocols/ICQ-WIM/src/proto.cpp')
-rw-r--r-- | protocols/ICQ-WIM/src/proto.cpp | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/protocols/ICQ-WIM/src/proto.cpp b/protocols/ICQ-WIM/src/proto.cpp index e50442fd8b..0e5cb32fb0 100644 --- a/protocols/ICQ-WIM/src/proto.cpp +++ b/protocols/ICQ-WIM/src/proto.cpp @@ -393,6 +393,37 @@ int CIcqProto::AuthRequest(MCONTACT hContact, const wchar_t* szMessage) } //////////////////////////////////////////////////////////////////////////////////////// +// File operations + +HANDLE CIcqProto::FileAllow(MCONTACT, HANDLE hTransfer, const wchar_t *pwszSavePath) +{ + if (!m_bOnline) + return nullptr; + + auto *ft = (IcqFileTransfer *)hTransfer; + ft->m_wszFileName.Insert(0, pwszSavePath); + ft->pfts.szCurrentFile.w = ft->m_wszFileName.GetBuffer(); + + auto *pReq = new AsyncHttpRequest(CONN_NONE, REQUEST_GET, ft->m_szHost, &CIcqProto::OnFileRecv); + pReq->pUserInfo = ft; + pReq->AddHeader("Sec-Fetch-User", "?1"); + pReq->AddHeader("Sec-Fetch-Site", "cross-site"); + pReq->AddHeader("Sec-Fetch-Mode", "navigate"); + Push(pReq); + + return hTransfer; +} + +int CIcqProto::FileCancel(MCONTACT hContact, HANDLE hTransfer) +{ + ProtoBroadcastAck(hContact, ACKTYPE_FILE, ACKRESULT_FAILED, hTransfer, 0); + + auto *ft = (IcqFileTransfer *)hTransfer; + delete ft; + return 0; +} + +//////////////////////////////////////////////////////////////////////////////////////// // GetCaps - return protocol capabilities bits INT_PTR CIcqProto::GetCaps(int type, MCONTACT) |