Files
selfcare/proxy_c/curl_adaptor.h
T
2025-03-03 11:40:37 +08:00

207 lines
5.3 KiB
C

#ifndef __CURL_ADAPTOR_H__
#define __CURL_ADAPTOR_H__
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <unistd.h>
#include <assert.h>
#include "multi.h"
#include "curl.h"
#include "easy.h"
#include "common.h"
/* for For querying monetary or wallet balance */
#define URLPrefix "" // "http://"
#define URLFetchSub "/rest-services/subscriber/%s"
#define URLFetchUPBalance "/rest-services/subscriber/%s/info/userpaymentbalance"
#define URLFetchInfoBalance "/rest-services/subscriber/%s/info/balance"
/* url: 查询 */
#define URLFetchWalletBalanceGetsubsid g_rest_proxy_env.cnf.url_fetchwalletbalance_getsubsid
#define URLFetchWalletBalance g_rest_proxy_env.cnf.url_fetchwalletbalance
/* url: 充值卡充值 */
#define URLRechargeGetsubsid g_rest_proxy_env.cnf.url_recharge_getsubsid
#define URLRecharge g_rest_proxy_env.cnf.url_recharge
/* url: 余额转账 */
#define URLTransGetsubidSender g_rest_proxy_env.cnf.url_trans_getsubsid_sender
#define URLTransGetsubidReceiver g_rest_proxy_env.cnf.url_trans_getsubsid_receiver
#define URLTrans g_rest_proxy_env.cnf.url_trans
#define RESTFUL_IP_SIZE 32
#define RESTFUL_CUL_BUF_MAX 256
#define RESTFUL_SUBSID_LEN 24
#define RESTFUL_MSISDN_LEN 24
#define RESTFUL_USERNAME 64
#define RESTFUL_PASSWOR 64
typedef struct _SRestfulInfo
{
char queryIP[RESTFUL_IP_SIZE];
unsigned int queryPort;
char recharegeIP[RESTFUL_IP_SIZE];
unsigned int recharegePort;
}SRestFulInfo;
extern SRestFulInfo g_restful;
typedef struct _SubscriberIdentity
{
unsigned char identityChoice; /*1:imsi,2:msisdn*/
unsigned char msisdn[8+1]; /* TBCD */
unsigned char imsi[8+1]; /* TBCD */
}SubscriberIdentity;
typedef enum _ECurlType
{
// URL_FETCH_SUB = 0x00,
URL_FETCH_UPBalance = 0x00,
URL_FETCH_InfoBalance,
URL_FETCH_WalletBalance_Getsubsid,
URL_FETCH_WalletBalance, /* for For querying monetary or wallet balance */
URL_RECHAGRGE_Getsubsid,
URL_RECHAGRGE, /* for Voucher recharge */
URL_TRANS_GetsubsidSender, /* 转账获取sender的subscriberID的url */
URL_TRANS_GetsubsidReceiver, /* 转账获取receiver的subscriberID的url */
URL_TRANS, /* 转账的url */
URL_PPC_OfferGetAllV2_1,
URL_MAX_NUM,
}ECurlType;
typedef struct _SCurlRestAdaptorHeader
{
unsigned short ppsAppID;
unsigned short restproxyAppID;
}SCurlRestAdaptorHeader;
typedef struct _SCurlDataFetchSubscribe
{
SubscriberIdentity subID;
}SCurlDataFetchSubscribe;
typedef union _UCurlAdaptorVal
{
SCurlDataFetchSubscribe subscribeID;
}UCurlAdaptorVal;
/* restful query struct */
typedef struct _SCurlRestAdaptorQuery
{
char msisdn[RESTFUL_MSISDN_LEN];
char subsid[RESTFUL_SUBSID_LEN];
}SCurlRestAdaptorQuery;
/* restful query response struct */
typedef struct _SCurlRestAdatptorQueryRes
{
char optional_flag;
char result;
char error_code;
unsigned int balance;
unsigned int mo_expiry;
unsigned int mt_expiry;
}SCurlRestAdatptorQueryRes;
/* restful topup struct */
typedef struct _SCurlRestAdatptorTopup
{
char msisdn[RESTFUL_MSISDN_LEN];
char pin[RESTFUL_MSISDN_LEN];
char subsid[RESTFUL_SUBSID_LEN];
}SCurlRestAdatptorTopup;
/* restful topup response struct */
typedef struct _SCurlRestAdatptorTopupRes
{
char optional_flag;
char result;
char error_code;
unsigned int balance;
unsigned int mo_expiry;
unsigned int mt_expiry;
}SCurlRestAdatptorTopupRes;
typedef struct _SCurlRestAdatptorTransfer
{
char msisdn_sender[24]; // 转出的号码
char msisdn_receiver[24]; // 转入的号码
unsigned int money; // 转账金额
char subsid_sender[RESTFUL_SUBSID_LEN]; // 转出账号对应的subscriber-id
char subsid_receiver[RESTFUL_SUBSID_LEN]; // 转入账号对应的subscriber-id
}SCurlRestAdatptorTransfer;
typedef struct _SCurlRestAdatptorTransferRes
{
unsigned char optional_flag;
unsigned char result;
unsigned char error_code;
}SCurlRestAdatptorTransferRes;
typedef struct _SCurlAdaptor
{
ECurlType urlType;
char urlBuf[RESTFUL_CUL_BUF_MAX];
SCurlRestAdaptorHeader header;
union
{
SCurlRestAdaptorQuery query;
SCurlRestAdatptorQueryRes query_res;
SCurlRestAdatptorTopup topup;
SCurlRestAdatptorTopupRes topup_res;
SCurlRestAdatptorTransfer transfer;
SCurlRestAdatptorTransferRes transfer_res;
}msg;
}SCurlAdaptor;
/*
* curl adaptor deliver the http request, receive and resolve the reponse, then pass the info to up layer
* curAdaptor: resolve information
* retCode: 200->success
*/
typedef int (*CURL_ADAPTOR_APP_CB)(SCurlAdaptor *curAdaptor, int retCode);
/*
* function: init curl adaptor.
* appCB: curl upper layer call back
* restfulIP: restful host ip. host order
* restfulPort: restful port. host order
* ret: SUCCESS or FAILURE
*/
int curl_adaptor_init(CURL_ADAPTOR_APP_CB appCB, const char* queryIP, unsigned int queryPort, const char* recharegeIP, unsigned int recharegePort);
/*
* function: prepare to call restful api
* curAdaptor: para that to be send as parameter
* ret: SUCCESS or FAILURE
*/
int curl_adaptor_add(SCurlAdaptor* curAdaptor);
/*
* function: relese curl adaptor resource
* ret: SUCCESS or FAILURE
*/
int curl_adaptor_fini();
#endif /* __CURL_ADAPTOR_H__ */