apiclient.h
上传用户:coffee44
上传日期:2018-10-23
资源大小:12304k
文件大小:10k
- #include "StdAfx.h"
- #ifndef __APPSTORE_API_INCLUDE__
- #define __APPSTORE_API_INCLUDE__
- //////////////////////////////////////////////////////////////////////////
- #pragma warning(disable: 4786)
- #include <string>
- #include <sstream>
- #include <list>
- #include "libcurl/include/curl/curl.h"
- #include "md5.h"
- using namespace std;
- //////////////////////////////////////////////////////////////////////////
- // constant definition
- //
- // 应用 KEY 不应该超过20字节
- #define APPKEY_MAX_LEN (40+1)
- // 应用 Secret KEY 不应该超过20字节
- #define APPSKEY_MAX_LEN (40+1)
- // User Agent Name
- #define MAX_UA_NAME_LEN (40+1)
- // Cookie string storage Space
- #define MAX_COOKIE_LEN (100+1)
- // Session Key Max Length
- #define MAX_SESSIONKEY_LEN (160+1)
- // Signature Length
- #define MAX_SIG_LEN (40+1)
- // 用户名
- #define MAX_USERNAME_LEN (40+1)
- ///URL 长度
- #define MAX_WS_URL_LEN (140)
- //////////////////////////////////////////////////////////////////////////
- // 会话状态:0:未登录,1:已经登录
- #define SESSION_STATE_UNLOGIN 0
- #define SESSION_STATE_LOGINED 1
- class CApiClient
- {
- public:
-
- // 普通构造函数;
- CApiClient();
-
- // 拷贝构造函数
- CApiClient(const CApiClient & rhs);
-
- // 带参数构造函数
- CApiClient(char * pszAPIKEY,char * pszAPISKEY,char * pszServerURL);
-
- // 析构函数
- virtual ~CApiClient();
-
- //////////////////////////////////////////////////////////////////////////////////////////////////////
- /// 登录操作
- string LoginUser(const char * pszUserName, const char * pszPassword,
- const char * pszSessionKey=NULL, const char * pszFormat="JSON");
- /// 登陆包:输入参数:用户名, 密码, 服务器URL
- string LoginPackage( const char *strUserId, const char *strUserPsw, const char *strServUrl);
- /// 用户注册包:注册类型,注册邮箱,注册ID,注册密码,确认密码,验证码
- string RegisterPackage( const char *strRegType, const char *strEmail, const char *strUserId,
- const char *strPsw, const char* strRPsw, const char *strValidateCode);
- /// 获取推荐信息:用户ID,索引开始号,最多返回结果数,排序字段名,升降序或其他,推荐范围
- string GetRecomMsg(const char *strUserId, const char *strIndex, const char *strMaxNum,
- const char *strOrderByName, const char* strOrderDirec, const char *strArea);
- /// 猜你喜欢:用户ID,最多返回结果数
- string GuessYouLike(const char *strUserId,const char *strMaxNum);
- /// 获取应用分类列表:用户ID,索引开始号,最多返回结果数
- string GetAppGroup(const char *strUserId, const char *strIndex, const char *strMaxNum);
- /// 获取收藏应用:用户ID,索引开始号,最多返回结果数
- string GetCollectionUse(const char *strUserId, const char *strIndex, const char *strMaxNum);
- /// 获取应用:用户ID,索引开始号,最多返回结果数,用户行为
- string GetMyApp(const char *strUserId, const char *strIndex, const char *strMaxNum, const char *strUserAction);
- /// 应用搜索:
- string UseSearch(const char *strUserId, const char *strIndex, const char *strMaxNum, const char *strKeyword,
- const char *strSortId, const char *strPriceSmall, const char *strPriceBig, const char *strBrandName,
- const char *strModleName, const char *strOrderByName, const char *strOrderDirec);
- /// 店铺搜索:
- string StoreSearch(const char *strUserId, const char *strIndex, const char *strMaxNum, const char *strKeyword,
- const char *strSortId, const char *strOrderByName, const char *strOrderDirec, const char *strShopRate);
- /// 增加应用收藏:
- string AddCollection(const char *strUserId, const char *strAppId,const char * strArea);
- /// 删除应用收藏:
- string DelCollection(const char *strUserId, const char *strAppId,const char * strArea);
- /// 店铺列表:=> 收件箱信息列表:
- string CollectionList(const char *strUserId, const char *strIndex, const char *strMaxNum);
- /// 发送消息:
- string SendMsg(const char *strUserId, const char *strFriendID, const char *strSendValue);
- /// 回复消息:
- string ResendMsg(const char *strUserId, const char *strFriendID, const char *strSendValue);
- /// 获取所有好友:
- string GetAllFrd(const char *strUserId, const char *strIndex, const char *strMaxNum);
- /// 增加好友:
- string AddFrd(const char *strUserId, const char *strFriendID);
- /// 删除好友:
- string DelFrd(const char *strUserId, const char *strFriendID);
- /// 好友空间:
- string GetFrdSpace(const char *strUserId, const char *strFriendID);
- /// 获取好友动态信息:
- string GetFrdNewsFeed(const char *strUserId, const char *strIndex, const char *strMaxNum);
- /// 获取分组:
- string GetTeam(const char *strUserId, const char *strIndex, const char *strMaxNum);
- /// 增加分组:
- string AddTeam();
- /// 移动到组:
- string MovetoTeam();
- /// 重命名组:
- string RenameTeam();
- /// 获取店铺信息:
- string GetStoreMsg(const char *strUserId, const char *strShopID);
- /// 订阅店铺:
- string SubscribeStore(const char *strUserId, const char *strShopID);
- /// 获取掌柜推荐:
- string GetShopKeeperRecom(const char *strUserId, const char *strShopKeeperId,
- const char *strIndex, const char *strMaxNum);
- /// 获取店铺应用:
- string GetStoreUse(const char *strUserId, const char *strShopId,const char *strIndex,
- const char *strMaxNum, const char *strOrderByName, const char *strOrderDirec);
- /// 获取成交记录:
- string GetDealRecord();
- /// 获取买家须知:
- string GetBuyerNotice(const char *strUserId, const char *strShopId);
- /// 根据应用ID获取附件ID:
- string GetAffixByApp(const char *strUserId, const char *strAppId);
- /// 购买应用:
- string BuyUse(const char *strUserId, const char *strAppId, const char *strAffixId);
- /// 下载应用:
- string DownloadUse(const char *strUserId, const char *strAppId, const char *strAffixId);
- /// 设置推荐应用:
- string SetRecomUse(const char *strUserId, const char *strAppId,
- const char *strArea, const char *strFriendID);
-
- /// 评价应用:
- string EvaluateUse(const char *strUserId, const char *strAppId,
- const char *strAppRate, const char *strContent);
- /// 获取应用详情:
- string GetUseDetail(const char *strUserId, const char *strAppId);
- /// 获取相关应用:
- string GetOtherUse(const char *strUserId, const char *strAppId,
- const char *strIndex, const char *strMaxNum);
- /// 获取应用说明:
- string GetUseIntroduction();
- /// 获取评价详情:
- string GetEvaluateDetail(const char *strUserId, const char *strAppId,
- const char *strIndex, const char *strMaxNum);
-
- /// 成交记录:
- string DealRecord();
-
- /// 留言簿:
- string VisitorBook(const char *strUserId, const char *strAppId,
- const char *strIndex, const char *strMaxNum);
-
- /// 获取店铺精品列表:
- string GetBoutiqueList(const char *strUserId, const char *strIndex, const char *strMaxNum);
- /// 获取店铺排行:
- string GetStoreRanking(const char *strUserId, const char *strIndex,
- const char *strMaxNum, const char *strCondition, const char *strOrderDirec);
- /// 获取应用排行:
- string GetUseRanking(const char *strUserId, const char *strAppGroupId, const char *strIndex,
- const char *strMaxNum, const char *strCondition, const char *strOrderDirec);
- /// 获取店铺(超市)动态列表
- string GetStoreDymList(const char *strUserId, const char *strIndex, const char *strMaxNum);
-
- /// 获取个性桌面
- string GetAllDesktopInfos(const char* strName, const char* strPass);
- /// 删除个性桌面
- string RemoveDesktopInfo(const char* strName, const char* strPass, const char* strSchemeId);
- /// 上传个性桌面
- string UpDesktopInfo(const char* strName, const char* strPass, const char* strSchemeId, const char* strSchemeFtpUrl);
- /// 查询个性桌面
- string GetDesktopInfos(const char* strName, const char* strPass, const char* strSchemeId);
-
- public:
- /// 获取最终数据
- list<string> getValueLst() { return m_lstStrValue;};
- //分析解析 JSON 数据
- int AnalyzeRespMsg(string& result, const char* strKeyName, list<string>& lstStrValue);
- //删除csSrc里面的csFiltKey关键字的"<> </>"数据信息,返回 csDst
- void filterString(char * csSrc, char * csDst, char * csFiltKey);
- //删除csSrc里面的"<> </>"数据,返回 csDst
- void filterString2(char * csSrc, char * csDst);
- //删除csSrc里面的cFiltKey单个字符的信息,返回 csDst
- void filterChar(char * csSrc, char * csDst, char cFiltKey);
- //UTF8数据转换GBK
- string UTF8ToGBK(char *strUTF8);
- //GBK数据转换UTF8
- int GBKToUTF8(unsigned char * lpGBKStr,unsigned char * lpUTF8Str,int nUTF8StrLen);
- protected:
- //发送和解析数据
- string SendAndRecvPackage(list<string> myParams);
- //构造其他参数
- void StructureParams(list<string>& lstParams);
- public:
- //URL地址
- char m_szWebServiceURL[MAX_WS_URL_LEN];
- // 应用的 appkey
- char m_szAppKey[APPKEY_MAX_LEN];
-
- // 应用的 Secret Key,不在网络上传送
- char m_szAppSecretKey[APPSKEY_MAX_LEN];
-
- // 用于客户侧UserAgent侧存储Cookie;
- char m_szCookie[MAX_COOKIE_LEN];
- // 加密钥匙
- char m_szSessionKey[MAX_COOKIE_LEN];
- // 数据格式说明
- char m_szFormat[MAX_COOKIE_LEN];
-
- // 用户名称
- char m_szUserName[MAX_USERNAME_LEN];
-
- // 用户UID;
- ULONG m_ulUID;
-
- // 登录状态
- ULONG m_bLoginState; // 0-非登录状态,1-已经登录
- // 数组长度
- ULONG m_itemCount;
- // 数据开始位置
- ULONG m_startIndex;
- // 数组当前位置
- ULONG m_currentCount;
- // 错误代码
- ULONG m_errCode;
- // 返回值列表
- list<string> m_lstStrValue;
-
- CURL * m_pcurl;
- CURLcode res;
- BOOL has_session;
- char m_strSession_key[100];
- int call_id;
- //internal functions
- string get_signature( list<string> params );
- static string md5( string str );
- // static string get_param_string( list<string> params, bool separate );
- static string get_param_string( list<string> ¶ms, bool separate );
- static size_t write_callback( void *ptr, size_t size, size_t nmemb, void *userp );
- bool request( string method, list<string> params, string *result );
- /* UTILITY FUNCTIONS */
- private:
- string convert_xml_to_result(string &szxml,string &method_name,list<string> ¶ms);
- string convert_simplexml_to_array(string &sxml);
- void _call_method(string &method_name,list<string> ¶ms);
- list<string> create_post_string(string &method_name,list<string> ¶ms);
- string post_request(string &method_name,list<string> ¶ms);
-
- };
- #endif // __APPSTORE_API_INCLUDE__
- // End Of File : apiclient.h