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

207 lines
5.3 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#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__ */