Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.

243 righe
7.7 KiB

  1. #include "libcurl_mock.h"
  2. #pragma GCC diagnostic ignored "-Wvarargs"
  3. libcurl_mock * libcurl_mock::instance = nullptr;
  4. extern "C"
  5. {
  6. CURLcode curl_global_init ( long flags )
  7. {
  8. return libcurl_mock::instance
  9. ? libcurl_mock::instance->curl_global_init(flags)
  10. : CURLE_OK;
  11. }
  12. void curl_global_cleanup ( void )
  13. {
  14. if (libcurl_mock::instance)
  15. libcurl_mock::instance->curl_global_cleanup();
  16. }
  17. struct curl_slist * curl_slist_append ( struct curl_slist * list,
  18. const char * elem)
  19. {
  20. return libcurl_mock::instance
  21. ? libcurl_mock::instance->curl_slist_append(list, elem)
  22. : nullptr;
  23. }
  24. void curl_slist_free_all ( struct curl_slist * list )
  25. {
  26. if (libcurl_mock::instance)
  27. libcurl_mock::instance->curl_slist_free_all(list);
  28. }
  29. CURL * curl_easy_init(void)
  30. {
  31. return libcurl_mock::instance
  32. ? libcurl_mock::instance->curl_easy_init()
  33. : nullptr;
  34. }
  35. void curl_easy_cleanup(CURL * curl)
  36. {
  37. if (libcurl_mock::instance)
  38. libcurl_mock::instance->curl_easy_cleanup(curl);
  39. }
  40. CURLcode curl_easy_setopt(CURL * curl,
  41. CURLoption option,
  42. ...)
  43. {
  44. if (!libcurl_mock::instance)
  45. return CURLE_OK;
  46. va_list args;
  47. va_start(args, option);
  48. if (option >= CURLOPTTYPE_OFF_T)
  49. return libcurl_mock::instance->curl_easy_setopt_off(curl, option, va_arg(args, curl_off_t));
  50. else if (option >= CURLOPTTYPE_FUNCTIONPOINT)
  51. return libcurl_mock::instance->curl_easy_setopt_ptr(curl, option, va_arg(args, void *));
  52. else if (option >= CURLOPTTYPE_STRINGPOINT)
  53. return libcurl_mock::instance->curl_easy_setopt_ptr(curl, option, va_arg(args, void *));
  54. else if (option >= CURLOPTTYPE_OBJECTPOINT)
  55. return libcurl_mock::instance->curl_easy_setopt_ptr(curl, option, va_arg(args, void *));
  56. else if (option >= CURLOPTTYPE_LONG)
  57. return libcurl_mock::instance->curl_easy_setopt_long(curl, option, va_arg(args, long));
  58. return CURLE_OK;
  59. }
  60. CURLcode curl_easy_perform(CURL * curl)
  61. {
  62. return libcurl_mock::instance
  63. ? libcurl_mock::instance->curl_easy_perform(curl)
  64. : CURLE_OK;
  65. }
  66. CURLcode curl_easy_getinfo(CURL * curl,
  67. CURLINFO info,
  68. ...)
  69. {
  70. if (!libcurl_mock::instance)
  71. return CURLE_OK;
  72. va_list args;
  73. va_start(args, info);
  74. if (info >= CURLINFO_OFF_T)
  75. return libcurl_mock::instance->curl_easy_getinfo_off(curl, info, va_arg(args, curl_off_t *));
  76. else if (info >= CURLINFO_SOCKET)
  77. return libcurl_mock::instance->curl_easy_getinfo_socket(curl, info, va_arg(args, curl_socket_t *));
  78. else if (info >= CURLINFO_PTR)
  79. return libcurl_mock::instance->curl_easy_getinfo_ptr(curl, info, va_arg(args, void *));
  80. else if (info >= CURLINFO_SLIST)
  81. return libcurl_mock::instance->curl_easy_getinfo_ptr(curl, info, va_arg(args, void *));
  82. else if (info >= CURLINFO_DOUBLE)
  83. return libcurl_mock::instance->curl_easy_getinfo_double(curl, info, va_arg(args, double *));
  84. else if (info >= CURLINFO_LONG)
  85. return libcurl_mock::instance->curl_easy_getinfo_long(curl, info, va_arg(args, long *));
  86. else if (info >= CURLINFO_STRING)
  87. return libcurl_mock::instance->curl_easy_getinfo_str(curl, info, va_arg(args, char **));
  88. return CURLE_OK;
  89. }
  90. CURL * curl_easy_duphandle(CURL *curl)
  91. {
  92. return libcurl_mock::instance
  93. ? libcurl_mock::instance->curl_easy_duphandle(curl)
  94. : nullptr;
  95. }
  96. void curl_easy_reset(CURL *curl)
  97. {
  98. if (libcurl_mock::instance)
  99. libcurl_mock::instance->curl_easy_reset(curl);
  100. }
  101. CURLcode curl_easy_recv(CURL * curl,
  102. void * buffer,
  103. size_t buflen,
  104. size_t * n)
  105. {
  106. return libcurl_mock::instance
  107. ? libcurl_mock::instance->curl_easy_recv(curl, buffer, buflen, n)
  108. : CURLE_OK;
  109. }
  110. CURLcode curl_easy_send(CURL * curl,
  111. const void * buffer,
  112. size_t buflen,
  113. size_t * n)
  114. {
  115. return libcurl_mock::instance
  116. ? libcurl_mock::instance->curl_easy_send(curl, buffer, buflen, n)
  117. : CURLE_OK;
  118. }
  119. const char * curl_easy_strerror ( CURLcode code )
  120. {
  121. return libcurl_mock::instance
  122. ? libcurl_mock::instance->curl_easy_strerror(code)
  123. : nullptr;
  124. }
  125. const char * curl_multi_strerror ( CURLMcode code )
  126. {
  127. return libcurl_mock::instance
  128. ? libcurl_mock::instance->curl_multi_strerror(code)
  129. : nullptr;
  130. }
  131. CURLM * curl_multi_init ( void )
  132. {
  133. return libcurl_mock::instance
  134. ? libcurl_mock::instance->curl_multi_init()
  135. : nullptr;
  136. }
  137. CURLMcode curl_multi_cleanup ( CURLM *multi_handle )
  138. {
  139. return libcurl_mock::instance
  140. ? libcurl_mock::instance->curl_multi_cleanup(multi_handle)
  141. : CURLM_OK;
  142. }
  143. CURLMcode curl_multi_add_handle ( CURLM * multi_handle,
  144. CURL * curl_handle )
  145. {
  146. return libcurl_mock::instance
  147. ? libcurl_mock::instance->curl_multi_add_handle(multi_handle, curl_handle)
  148. : CURLM_OK;
  149. }
  150. CURLMcode curl_multi_remove_handle ( CURLM * multi_handle,
  151. CURL * curl_handle )
  152. {
  153. return libcurl_mock::instance
  154. ? libcurl_mock::instance->curl_multi_remove_handle(multi_handle, curl_handle)
  155. : CURLM_OK;
  156. }
  157. CURLMcode curl_multi_fdset ( CURLM * multi_handle,
  158. fd_set * read_fd_set,
  159. fd_set * write_fd_set,
  160. fd_set * exc_fd_set,
  161. int * max_fd)
  162. {
  163. return libcurl_mock::instance
  164. ? libcurl_mock::instance->curl_multi_fdset(multi_handle, read_fd_set, write_fd_set, exc_fd_set, max_fd)
  165. : CURLM_OK;
  166. }
  167. CURLMcode curl_multi_wait ( CURLM * multi_handle,
  168. struct curl_waitfd extra_fds[],
  169. unsigned int extra_nfds,
  170. int timeout_ms,
  171. int * ret)
  172. {
  173. return libcurl_mock::instance
  174. ? libcurl_mock::instance->curl_multi_wait(multi_handle, extra_fds, extra_nfds, timeout_ms, ret)
  175. : CURLM_OK;
  176. }
  177. CURLMcode curl_multi_perform ( CURLM * multi_handle,
  178. int * running_handles)
  179. {
  180. return libcurl_mock::instance
  181. ? libcurl_mock::instance->curl_multi_perform(multi_handle, running_handles)
  182. : CURLM_OK;
  183. }
  184. CURLMsg * curl_multi_info_read ( CURLM * multi_handle,
  185. int * msgs_in_queue )
  186. {
  187. return libcurl_mock::instance
  188. ? libcurl_mock::instance->curl_multi_info_read(multi_handle, msgs_in_queue)
  189. : nullptr;
  190. }
  191. CURLMcode curl_multi_timeout ( CURLM * multi_handle,
  192. long * milliseconds )
  193. {
  194. return libcurl_mock::instance
  195. ? libcurl_mock::instance->curl_multi_timeout(multi_handle, milliseconds)
  196. : CURLM_OK;
  197. }
  198. }