apiclient.h
上传用户:coffee44
上传日期:2018-10-23
资源大小:12304k
文件大小:10k
源码类别:

TAPI编程

开发平台:

Visual C++

  1. #include "StdAfx.h"
  2. #ifndef   __APPSTORE_API_INCLUDE__
  3. #define   __APPSTORE_API_INCLUDE__
  4. //////////////////////////////////////////////////////////////////////////
  5. #pragma warning(disable: 4786)
  6. #include <string>
  7. #include <sstream>
  8. #include <list>
  9. #include "libcurl/include/curl/curl.h"
  10. #include "md5.h"
  11. using namespace std;
  12. //////////////////////////////////////////////////////////////////////////
  13. // constant definition
  14. //
  15. // 应用 KEY 不应该超过20字节
  16. #define   APPKEY_MAX_LEN    (40+1)
  17. // 应用 Secret KEY 不应该超过20字节
  18. #define   APPSKEY_MAX_LEN   (40+1)
  19. //  User Agent Name
  20. #define  MAX_UA_NAME_LEN   (40+1)
  21. // Cookie string storage Space
  22. #define  MAX_COOKIE_LEN    (100+1)
  23. // Session Key Max Length 
  24. #define  MAX_SESSIONKEY_LEN  (160+1)
  25. // Signature Length 
  26. #define  MAX_SIG_LEN         (40+1)
  27. // 用户名
  28. #define  MAX_USERNAME_LEN    (40+1)
  29. ///URL 长度
  30. #define MAX_WS_URL_LEN       (140)
  31. //////////////////////////////////////////////////////////////////////////
  32. // 会话状态:0:未登录,1:已经登录
  33. #define  SESSION_STATE_UNLOGIN  0
  34. #define  SESSION_STATE_LOGINED  1
  35. class CApiClient
  36. {
  37. public:
  38. // 普通构造函数; 
  39. CApiClient();
  40. // 拷贝构造函数
  41. CApiClient(const CApiClient & rhs);
  42. // 带参数构造函数
  43. CApiClient(char * pszAPIKEY,char * pszAPISKEY,char * pszServerURL);
  44. // 析构函数
  45. virtual  ~CApiClient();
  46.     //////////////////////////////////////////////////////////////////////////////////////////////////////
  47. ///  登录操作
  48. string LoginUser(const char * pszUserName, const char * pszPassword, 
  49. const char * pszSessionKey=NULL, const char * pszFormat="JSON");
  50. ///  登陆包:输入参数:用户名, 密码, 服务器URL 
  51. string LoginPackage( const char *strUserId, const char *strUserPsw, const char *strServUrl);
  52. ///  用户注册包:注册类型,注册邮箱,注册ID,注册密码,确认密码,验证码
  53. string RegisterPackage( const char *strRegType, const char *strEmail, const char *strUserId, 
  54. const char *strPsw, const char* strRPsw, const char *strValidateCode);
  55. ///  获取推荐信息:用户ID,索引开始号,最多返回结果数,排序字段名,升降序或其他,推荐范围
  56. string GetRecomMsg(const char *strUserId, const char *strIndex, const char *strMaxNum, 
  57. const char *strOrderByName, const char* strOrderDirec, const char *strArea);
  58. ///  猜你喜欢:用户ID,最多返回结果数
  59. string GuessYouLike(const char *strUserId,const char *strMaxNum);
  60. ///  获取应用分类列表:用户ID,索引开始号,最多返回结果数
  61. string GetAppGroup(const char *strUserId, const char *strIndex, const char *strMaxNum);
  62. ///  获取收藏应用:用户ID,索引开始号,最多返回结果数
  63. string GetCollectionUse(const char *strUserId, const char *strIndex, const char *strMaxNum);
  64. ///  获取应用:用户ID,索引开始号,最多返回结果数,用户行为
  65. string GetMyApp(const char *strUserId, const char *strIndex, const char *strMaxNum, const char *strUserAction);
  66. ///  应用搜索:
  67. string UseSearch(const char *strUserId, const char *strIndex, const char *strMaxNum, const char *strKeyword,
  68. const char *strSortId, const char *strPriceSmall, const char *strPriceBig, const char *strBrandName,
  69. const char *strModleName, const char *strOrderByName, const char *strOrderDirec);
  70. ///  店铺搜索:
  71. string StoreSearch(const char *strUserId, const char *strIndex, const char *strMaxNum, const char *strKeyword,
  72. const char *strSortId, const char *strOrderByName, const char *strOrderDirec, const char *strShopRate);
  73. ///  增加应用收藏:
  74. string AddCollection(const char *strUserId, const char *strAppId,const char * strArea);
  75. ///  删除应用收藏:
  76. string DelCollection(const char *strUserId, const char *strAppId,const char * strArea);
  77. ///  店铺列表:=>  收件箱信息列表:
  78. string CollectionList(const char *strUserId, const char *strIndex, const char *strMaxNum);
  79. ///  发送消息:
  80. string SendMsg(const char *strUserId, const char *strFriendID, const char *strSendValue);
  81. ///  回复消息:
  82. string ResendMsg(const char *strUserId, const char *strFriendID, const char *strSendValue);
  83. ///  获取所有好友:
  84. string GetAllFrd(const char *strUserId, const char *strIndex, const char *strMaxNum);
  85. ///  增加好友:
  86. string AddFrd(const char *strUserId, const char *strFriendID);
  87. ///  删除好友:
  88. string DelFrd(const char *strUserId, const char *strFriendID);
  89. ///  好友空间:
  90. string GetFrdSpace(const char *strUserId, const char *strFriendID);
  91. ///  获取好友动态信息:
  92. string GetFrdNewsFeed(const char *strUserId, const char *strIndex, const char *strMaxNum);
  93. ///  获取分组:
  94. string GetTeam(const char *strUserId, const char *strIndex, const char *strMaxNum);
  95. ///  增加分组:
  96. string AddTeam();
  97. ///  移动到组:
  98. string MovetoTeam();
  99. ///  重命名组:
  100. string RenameTeam();
  101. ///  获取店铺信息:
  102. string GetStoreMsg(const char *strUserId, const char *strShopID);
  103. ///  订阅店铺:
  104. string SubscribeStore(const char *strUserId, const char *strShopID);
  105. ///  获取掌柜推荐:
  106. string GetShopKeeperRecom(const char *strUserId, const char *strShopKeeperId,
  107. const char *strIndex, const char *strMaxNum);
  108. ///  获取店铺应用:
  109. string GetStoreUse(const char *strUserId, const char *strShopId,const char *strIndex, 
  110. const char *strMaxNum, const char *strOrderByName, const char *strOrderDirec);
  111. ///  获取成交记录:
  112. string GetDealRecord();
  113. ///  获取买家须知:
  114. string GetBuyerNotice(const char *strUserId, const char *strShopId);
  115. ///  根据应用ID获取附件ID:
  116. string GetAffixByApp(const char *strUserId, const char *strAppId);
  117. ///  购买应用:
  118. string BuyUse(const char *strUserId, const char *strAppId, const char *strAffixId);
  119. ///  下载应用:
  120. string DownloadUse(const char *strUserId, const char *strAppId, const char *strAffixId);
  121. ///  设置推荐应用:
  122. string SetRecomUse(const char *strUserId, const char *strAppId, 
  123. const char *strArea, const char *strFriendID);
  124. ///  评价应用:
  125. string EvaluateUse(const char *strUserId, const char *strAppId, 
  126. const char *strAppRate, const char *strContent);
  127. ///  获取应用详情:
  128. string GetUseDetail(const char *strUserId, const char *strAppId);
  129. ///  获取相关应用:
  130. string GetOtherUse(const char *strUserId, const char *strAppId,
  131. const char *strIndex, const char *strMaxNum);
  132. ///  获取应用说明:
  133. string GetUseIntroduction();
  134. ///  获取评价详情:
  135. string GetEvaluateDetail(const char *strUserId, const char *strAppId,
  136. const char *strIndex, const char *strMaxNum);
  137. ///  成交记录:
  138. string DealRecord();
  139. ///  留言簿:
  140. string VisitorBook(const char *strUserId, const char *strAppId,
  141. const char *strIndex, const char *strMaxNum);
  142. ///  获取店铺精品列表:
  143. string GetBoutiqueList(const char *strUserId, const char *strIndex, const char *strMaxNum);
  144. ///  获取店铺排行:
  145. string GetStoreRanking(const char *strUserId, const char *strIndex, 
  146. const char *strMaxNum, const char *strCondition, const char *strOrderDirec);
  147. ///  获取应用排行:
  148. string GetUseRanking(const char *strUserId, const char *strAppGroupId, const char *strIndex, 
  149. const char *strMaxNum, const char *strCondition, const char *strOrderDirec);
  150. ///  获取店铺(超市)动态列表 
  151. string GetStoreDymList(const char *strUserId, const char *strIndex, const char *strMaxNum);
  152. ///  获取个性桌面
  153. string GetAllDesktopInfos(const char* strName, const char* strPass);
  154. ///  删除个性桌面
  155. string RemoveDesktopInfo(const char* strName, const char* strPass, const char* strSchemeId);
  156. ///  上传个性桌面
  157. string UpDesktopInfo(const char* strName, const char* strPass, const char* strSchemeId, const char* strSchemeFtpUrl);
  158. ///  查询个性桌面
  159. string GetDesktopInfos(const char* strName, const char* strPass, const char* strSchemeId);
  160. public:
  161.     ///  获取最终数据
  162. list<string> getValueLst() { return m_lstStrValue;};
  163. //分析解析 JSON 数据
  164. int  AnalyzeRespMsg(string& result, const char* strKeyName, list<string>& lstStrValue);
  165. //删除csSrc里面的csFiltKey关键字的"<> </>"数据信息,返回 csDst
  166. void filterString(char * csSrc, char * csDst, char * csFiltKey);
  167. //删除csSrc里面的"<> </>"数据,返回 csDst
  168. void filterString2(char * csSrc, char * csDst);
  169. //删除csSrc里面的cFiltKey单个字符的信息,返回 csDst
  170. void filterChar(char * csSrc, char * csDst, char cFiltKey);
  171. //UTF8数据转换GBK
  172. string UTF8ToGBK(char *strUTF8);
  173. //GBK数据转换UTF8
  174. int GBKToUTF8(unsigned char * lpGBKStr,unsigned char * lpUTF8Str,int nUTF8StrLen);
  175. protected:
  176. //发送和解析数据
  177. string SendAndRecvPackage(list<string> myParams);
  178. //构造其他参数
  179. void StructureParams(list<string>& lstParams);
  180. public:
  181. //URL地址
  182. char m_szWebServiceURL[MAX_WS_URL_LEN];
  183. // 应用的 appkey
  184. char m_szAppKey[APPKEY_MAX_LEN];
  185. // 应用的 Secret Key,不在网络上传送
  186. char m_szAppSecretKey[APPSKEY_MAX_LEN];
  187. //  用于客户侧UserAgent侧存储Cookie;
  188. char m_szCookie[MAX_COOKIE_LEN];
  189. //  加密钥匙
  190. char m_szSessionKey[MAX_COOKIE_LEN];
  191. //  数据格式说明
  192. char m_szFormat[MAX_COOKIE_LEN];
  193. //  用户名称
  194. char m_szUserName[MAX_USERNAME_LEN];
  195. //  用户UID;
  196. ULONG m_ulUID;  
  197. // 登录状态
  198. ULONG m_bLoginState; // 0-非登录状态,1-已经登录
  199. // 数组长度
  200. ULONG m_itemCount;
  201. // 数据开始位置
  202. ULONG m_startIndex;
  203. // 数组当前位置
  204. ULONG m_currentCount;
  205. // 错误代码
  206. ULONG m_errCode;
  207. // 返回值列表
  208. list<string>  m_lstStrValue; 
  209. CURL * m_pcurl;
  210. CURLcode res;
  211. BOOL has_session;
  212. char m_strSession_key[100];
  213. int call_id;
  214. //internal functions
  215. string get_signature( list<string> params );
  216. static string md5( string str );
  217. // static string get_param_string( list<string> params, bool separate );
  218. static string get_param_string( list<string> &params, bool separate );
  219. static size_t write_callback( void *ptr, size_t size, size_t nmemb, void *userp );
  220. bool request( string method, list<string> params, string *result );
  221. /* UTILITY FUNCTIONS */
  222. private:
  223. string  convert_xml_to_result(string &szxml,string &method_name,list<string> &params);
  224. string  convert_simplexml_to_array(string &sxml);
  225. void  _call_method(string &method_name,list<string> &params);
  226. list<string> create_post_string(string &method_name,list<string> &params);
  227. string  post_request(string &method_name,list<string> &params);
  228. };
  229. #endif  //  __APPSTORE_API_INCLUDE__
  230. //  End Of File : apiclient.h