118 lines
4.4 KiB
C++
118 lines
4.4 KiB
C++
![]() |
|
|||
|
#include "WeWorkFinanceSdk_C.h"
|
|||
|
#include <stdio.h>
|
|||
|
#include <stdint.h>
|
|||
|
#include <stdlib.h>
|
|||
|
#include <string>
|
|||
|
using std::string;
|
|||
|
|
|||
|
#pragma comment(lib, "WeWorkFinanceSdk.lib")
|
|||
|
|
|||
|
int main(int argc, char* argv[])
|
|||
|
{
|
|||
|
int ret = 0;
|
|||
|
//seq <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>ҵ<EFBFBD>浵<EFBFBD><E6B5B5>Ϣ<EFBFBD><CFA2><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>Ž<EFBFBD><C5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ؽ<EFBFBD><D8BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>š<EFBFBD><C5A1>״<EFBFBD><D7B4><EFBFBD>ȡʱseq<65><71>0<EFBFBD><30>sdk<64>᷵<EFBFBD><E1B7B5><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>
|
|||
|
//limit <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡֵ<C8A1><D6B5>ΧΪ1~1000
|
|||
|
//proxy<78><79>passwdΪ<64><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>sdk<64>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>sdk<64><6B><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"https://qyapi.weixin.qq.com"<22><>
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>curl<72><6C><EFBFBD><EFBFBD>"https://qyapi.weixin.qq.com"<22><><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD><EFBFBD>ٴ<EFBFBD><D9B4><EFBFBD>sdk<64><6B>
|
|||
|
//timeout Ϊ<><CEAA>ȡ<EFBFBD>Ự<EFBFBD>浵<EFBFBD>ij<EFBFBD>ʱʱ<CAB1>䣬<EFBFBD><E4A3AC>λΪ<CEBB>룬<EFBFBD><EBA3AC><EFBFBD>鳬ʱʱ<CAB1><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ5s<35><73>
|
|||
|
//sdkfileid ý<><C3BD><EFBFBD>ļ<EFBFBD>id<69><64><EFBFBD>ӽ<EFBFBD><D3BD>ܺ<EFBFBD><DCBA>ĻỰ<C4BB>浵<EFBFBD>еõ<D0B5>
|
|||
|
//savefile ý<><C3BD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7>
|
|||
|
//encrypt_key <20><>ȡ<EFBFBD>Ự<EFBFBD>浵<EFBFBD><E6B5B5><EFBFBD>ص<EFBFBD>encrypt_random_key<65><79>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<D2B5>Ź<EFBFBD><C5B9><EFBFBD>̨<EFBFBD><CCA8>rsa<73><61>Կ<EFBFBD><D4BF>Ӧ<EFBFBD><D3A6>˽Կ<CBBD><D4BF><EFBFBD>ܺ<EFBFBD><DCBA>õ<EFBFBD>encrypt_key<65><79>
|
|||
|
//encrypt_chat_msg <20><>ȡ<EFBFBD>Ự<EFBFBD>浵<EFBFBD><E6B5B5><EFBFBD>ص<EFBFBD>encrypt_chat_msg
|
|||
|
//if (argc < 2) {
|
|||
|
// printf("./sdktools 1(chatmsg) 2(mediadata) 3(decryptdata)\n");
|
|||
|
// printf("./sdktools 1 seq limit proxy passwd timeout\n");
|
|||
|
// printf("./sdktools 2 fileid proxy passwd timeout savefile\n");
|
|||
|
// printf("./sdktools 3 encrypt_key encrypt_chat_msg\n");
|
|||
|
// return -1;
|
|||
|
//}
|
|||
|
|
|||
|
//ʹ<><CAB9>sdkǰ<6B><C7B0>Ҫ<EFBFBD><D2AA>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>sdk<64><6B><EFBFBD><EFBFBD>һֱʹ<D6B1>á<EFBFBD>
|
|||
|
//<2F><><EFBFBD>貢<EFBFBD><E8B2A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>sdk<64><6B><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD>̳߳<DFB3><CCB3><EFBFBD>һ<EFBFBD><D2BB>sdkʵ<6B><CAB5><EFBFBD><EFBFBD>
|
|||
|
//<2F><>ʼ<EFBFBD><CABC>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>ҵ<EFBFBD><D2B5>corpid<69><64>secrectkey<65><79>
|
|||
|
WeWorkFinanceSdk_t* sdk = NewSdk();
|
|||
|
ret = Init(sdk, "w*********8", "y***********************************I");
|
|||
|
if (ret != 0) {
|
|||
|
//sdk<64><6B>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>
|
|||
|
DestroySdk(sdk);
|
|||
|
printf("init sdk err ret:%d\n", ret);
|
|||
|
return -1;
|
|||
|
}
|
|||
|
|
|||
|
int type = strtoul(argv[1], NULL, 10);
|
|||
|
if (type == 1) {
|
|||
|
//<2F><>ȡ<EFBFBD>Ự<EFBFBD>浵
|
|||
|
uint64_t iSeq = strtoul(argv[2], NULL, 10);
|
|||
|
uint64_t iLimit = strtoul(argv[3], NULL, 10);
|
|||
|
uint64_t timeout = strtoul(argv[6], NULL, 10);
|
|||
|
|
|||
|
//ÿ<><C3BF>ʹ<EFBFBD><CAB9>GetChatData<74><61>ȡ<EFBFBD>浵ǰ<E6B5B5><C7B0>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>NewSlice<63><65>ȡһ<C8A1><D2BB>chatDatas<61><73><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD>chatDatas<61><73><EFBFBD><EFBFBD><EFBFBD>ݺ<DDBA><F3A3ACBB><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>FreeSlice<63>ͷš<CDB7>
|
|||
|
Slice_t* chatDatas = NewSlice();
|
|||
|
ret = GetChatData(sdk, iSeq, iLimit, argv[4], argv[5], timeout, chatDatas);
|
|||
|
if (ret != 0) {
|
|||
|
FreeSlice(chatDatas);
|
|||
|
printf("GetChatData err ret:%d\n", ret);
|
|||
|
return -1;
|
|||
|
}
|
|||
|
printf("GetChatData len:%d data:%s\n", chatDatas->len, chatDatas->buf);
|
|||
|
FreeSlice(chatDatas);
|
|||
|
}
|
|||
|
else if (type == 2) {
|
|||
|
//<2F><>ȡý<C8A1><C3BD><EFBFBD>ļ<EFBFBD>
|
|||
|
std::string index;
|
|||
|
uint64_t timeout = strtoul(argv[5], NULL, 10);
|
|||
|
int isfinish = 0;
|
|||
|
|
|||
|
//ý<><C3BD><EFBFBD>ļ<EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>sizeΪ512k<32><6B><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><CBB3><EFBFBD>512k<32><6B><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>Ҫ<EFBFBD><D2AA>Ƭ<EFBFBD><C6AC>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>δ<EFBFBD><CEB4>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>mediaData<74>е<EFBFBD>is_finish<73>᷵<EFBFBD><E1B7B5>0<EFBFBD><30>ͬʱmediaData<74>е<EFBFBD>outindexbuf<75>᷵<EFBFBD><E1B7B5><EFBFBD>´<EFBFBD><C2B4><EFBFBD>ȡ<EFBFBD><C8A1>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>GetMediaData<74><61>indexbuf<75><66>
|
|||
|
//indexbufһ<66><D2BB><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>Range:bytes=524288-1048575<37><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>Ǵ<EFBFBD>524288<38><38>1048575<37>ķ<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>״<EFBFBD><D7B4><EFBFBD>ȡ<EFBFBD><C8A1>д<EFBFBD><D0B4>indexbufΪ<66><CEAA><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƭʱֱ<CAB1><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴη<CFB4><CEB7>ص<EFBFBD>indexbuf<75><66><EFBFBD>ɡ<EFBFBD>
|
|||
|
while (isfinish == 0) {
|
|||
|
//ÿ<><C3BF>ʹ<EFBFBD><CAB9>GetMediaData<74><61>ȡ<EFBFBD>浵ǰ<E6B5B5><C7B0>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>NewMediaData<74><61>ȡһ<C8A1><D2BB>mediaData<74><61><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD>mediaData<74><61><EFBFBD><EFBFBD><EFBFBD>ݺ<DDBA><F3A3ACBB><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>FreeMediaData<74>ͷš<CDB7>
|
|||
|
printf("index:%s\n", index.c_str());
|
|||
|
MediaData_t* mediaData = NewMediaData();
|
|||
|
ret = GetMediaData(sdk, index.c_str(), argv[2], argv[3], argv[4], timeout, mediaData);
|
|||
|
if (ret != 0) {
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƭ<EFBFBD><C6AC>ȡʧ<C8A1>ܽ<EFBFBD><DCBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>÷<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC>ȡ<EFBFBD><C8A1>
|
|||
|
FreeMediaData(mediaData);
|
|||
|
printf("GetMediaData err ret:%d\n", ret);
|
|||
|
return -1;
|
|||
|
}
|
|||
|
printf("content size:%d isfin:%d outindex:%s\n", mediaData->data_len, mediaData->is_finish, mediaData->outindexbuf);
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD>512k<32><6B><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>Ƭ<EFBFBD><C6AC>ȡ<EFBFBD><C8A1><EFBFBD>˴<EFBFBD><CBB4><EFBFBD>Ҫʹ<D2AA><CAB9><EFBFBD><D7B7>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD>
|
|||
|
char file[200];
|
|||
|
snprintf(file, sizeof(file), "%s", argv[6]);
|
|||
|
FILE* fp = fopen(file, "ab+");
|
|||
|
printf("filename:%s \n", file);
|
|||
|
if (NULL == fp) {
|
|||
|
FreeMediaData(mediaData);
|
|||
|
printf("open file err\n");
|
|||
|
return -1;
|
|||
|
}
|
|||
|
|
|||
|
fwrite(mediaData->data, mediaData->data_len, 1, fp);
|
|||
|
fclose(fp);
|
|||
|
|
|||
|
//<2F><>ȡ<EFBFBD>´<EFBFBD><C2B4><EFBFBD>ȡ<EFBFBD><C8A1>Ҫʹ<D2AA>õ<EFBFBD>indexbuf
|
|||
|
index.assign(string(mediaData->outindexbuf));
|
|||
|
isfinish = mediaData->is_finish;
|
|||
|
FreeMediaData(mediaData);
|
|||
|
}
|
|||
|
}
|
|||
|
else if (type == 3) {
|
|||
|
//<2F><><EFBFBD>ܻỰ<DCBB>浵<EFBFBD><E6B5B5><EFBFBD><EFBFBD>
|
|||
|
//sdk<64><6B><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>rsa˽Կ<CBBD><D4BF><EFBFBD><EFBFBD>֤<EFBFBD>û<EFBFBD><C3BB>Ự<EFBFBD>浵<EFBFBD><E6B5B5><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD>Լ<EFBFBD><D4BC>ܹ<EFBFBD><DCB9><EFBFBD><EFBFBD>ܡ<EFBFBD>
|
|||
|
//<2F>˴<EFBFBD><CBB4><EFBFBD>Ҫ<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>rsa˽Կ<CBBD><D4BF><EFBFBD><EFBFBD>encrypt_random_key<65><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊencrypt_key<65><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>sdk<64><6B><EFBFBD><EFBFBD><EFBFBD><EFBFBD>encrypt_chat_msg<73><67>ȡ<EFBFBD>Ự<EFBFBD>浵<EFBFBD><E6B5B5><EFBFBD>ġ<EFBFBD>
|
|||
|
//ÿ<><C3BF>ʹ<EFBFBD><CAB9>DecryptData<74><61><EFBFBD>ܻỰ<DCBB>浵ǰ<E6B5B5><C7B0>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>NewSlice<63><65>ȡһ<C8A1><D2BB>Msgs<67><73><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD>Msgs<67><73><EFBFBD><EFBFBD><EFBFBD>ݺ<DDBA><F3A3ACBB><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>FreeSlice<63>ͷš<CDB7>
|
|||
|
|
|||
|
Slice_t* Msgs = NewSlice();
|
|||
|
ret = DecryptData(argv[2], argv[3], Msgs);
|
|||
|
printf("chatdata :%s ret :%d\n", Msgs->buf, ret);
|
|||
|
|
|||
|
FreeSlice(Msgs);
|
|||
|
}
|
|||
|
|
|||
|
DestroySdk(sdk);
|
|||
|
return ret;
|
|||
|
}
|