ISnovioService.cs 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. namespace OASystem.API.OAMethodLib.SnovioAPI;
  2. /// <summary>
  3. /// Snov.io API 服务。
  4. /// </summary>
  5. public interface ISnovioService
  6. {
  7. /// <summary>
  8. /// 使用配置中的 Client ID 和 Client Secret 获取 OAuth 访问令牌。
  9. /// </summary>
  10. /// <param name="cancellationToken">取消令牌。</param>
  11. /// <returns>Snov.io OAuth 访问令牌响应。</returns>
  12. Task<SnovioAccessTokenResponse> GetAccessTokenAsync(
  13. CancellationToken cancellationToken = default);
  14. /// <summary>
  15. /// 创建 Snov.io 公司数据库搜索任务。
  16. /// </summary>
  17. /// <param name="request">公司搜索请求体。</param>
  18. /// <param name="cancellationToken">取消令牌。</param>
  19. /// <returns>包含 task_hash 和结果地址的异步任务响应。</returns>
  20. Task<SnovioCompanySearchStartResponse> StartCompanySearchAsync(
  21. SnovioCompanySearchRequest request,
  22. CancellationToken cancellationToken = default);
  23. /// <summary>
  24. /// 根据 task_hash 获取公司搜索任务当前结果。
  25. /// </summary>
  26. /// <param name="taskHash">创建公司搜索任务时返回的 task_hash。</param>
  27. /// <param name="cancellationToken">取消令牌。</param>
  28. /// <returns>公司搜索结果响应;任务未完成时可返回处理中状态。</returns>
  29. Task<SnovioCompanySearchResultResponse> GetCompanySearchResultAsync(
  30. string taskHash,
  31. CancellationToken cancellationToken = default);
  32. /// <summary>
  33. /// 按指定间隔轮询公司搜索任务,直到任务完成、失败或超时。
  34. /// </summary>
  35. /// <param name="taskHash">创建公司搜索任务时返回的 task_hash。</param>
  36. /// <param name="timeout">最大等待时间,未指定时默认 2 分钟。</param>
  37. /// <param name="pollInterval">两次结果查询之间的间隔,未指定时默认 3 秒。</param>
  38. /// <param name="cancellationToken">取消令牌。</param>
  39. /// <returns>任务完成后的公司搜索结果响应。</returns>
  40. /// <exception cref="TimeoutException">任务在最大等待时间内未完成时抛出。</exception>
  41. /// <exception cref="InvalidOperationException">Snov.io 返回任务失败状态时抛出。</exception>
  42. Task<SnovioCompanySearchResultResponse> WaitForCompanySearchResultAsync(
  43. string taskHash,
  44. TimeSpan? timeout = null,
  45. TimeSpan? pollInterval = null,
  46. CancellationToken cancellationToken = default);
  47. /// <summary>
  48. /// 创建公司搜索任务并轮询等待实际结果。
  49. /// </summary>
  50. /// <param name="request">公司搜索条件和分页请求体。</param>
  51. /// <param name="timeout">最大等待时间,未指定时默认 2 分钟。</param>
  52. /// <param name="pollInterval">两次结果查询之间的间隔,未指定时默认 3 秒。</param>
  53. /// <param name="cancellationToken">取消令牌。</param>
  54. /// <returns>任务完成后的公司搜索结果响应。</returns>
  55. Task<SnovioCompanySearchResultResponse> SearchCompaniesAsync(
  56. SnovioCompanySearchRequest request,
  57. TimeSpan? timeout = null,
  58. TimeSpan? pollInterval = null,
  59. CancellationToken cancellationToken = default);
  60. /// <summary>
  61. /// 创建 Snov.io 域名潜在客户搜索任务。
  62. /// </summary>
  63. /// <param name="request">域名潜在客户搜索请求体。</param>
  64. /// <param name="cancellationToken">取消令牌。</param>
  65. /// <returns>包含 task_hash 和结果地址的异步任务响应。</returns>
  66. Task<SnovioDomainProspectsSearchStartResponse> StartDomainProspectsSearchAsync(
  67. SnovioDomainProspectsSearchRequest request,
  68. CancellationToken cancellationToken = default);
  69. /// <summary>
  70. /// 根据 task_hash 获取域名潜在客户搜索任务当前结果。
  71. /// </summary>
  72. /// <param name="taskHash">创建域名潜在客户搜索任务时返回的 task_hash。</param>
  73. /// <param name="cancellationToken">取消令牌。</param>
  74. /// <returns>域名潜在客户搜索结果响应;任务未完成时可返回处理中状态。</returns>
  75. Task<SnovioDomainProspectsSearchResultResponse> GetDomainProspectsSearchResultAsync(
  76. string taskHash,
  77. CancellationToken cancellationToken = default);
  78. /// <summary>
  79. /// 按指定间隔轮询域名潜在客户搜索任务,直到任务完成、失败或超时。
  80. /// </summary>
  81. /// <param name="taskHash">创建域名潜在客户搜索任务时返回的 task_hash。</param>
  82. /// <param name="timeout">最大等待时间,未指定时默认 2 分钟。</param>
  83. /// <param name="pollInterval">两次结果查询之间的间隔,未指定时默认 3 秒。</param>
  84. /// <param name="cancellationToken">取消令牌。</param>
  85. /// <returns>任务完成后的域名潜在客户搜索结果响应。</returns>
  86. /// <exception cref="TimeoutException">任务在最大等待时间内未完成时抛出。</exception>
  87. /// <exception cref="InvalidOperationException">Snov.io 返回任务失败状态时抛出。</exception>
  88. Task<SnovioDomainProspectsSearchResultResponse> WaitForDomainProspectsSearchResultAsync(
  89. string taskHash,
  90. TimeSpan? timeout = null,
  91. TimeSpan? pollInterval = null,
  92. CancellationToken cancellationToken = default);
  93. /// <summary>
  94. /// 创建域名潜在客户搜索任务并轮询等待实际结果。
  95. /// </summary>
  96. /// <param name="request">域名、职位筛选和分页请求体。</param>
  97. /// <param name="timeout">最大等待时间,未指定时默认 2 分钟。</param>
  98. /// <param name="pollInterval">两次结果查询之间的间隔,未指定时默认 3 秒。</param>
  99. /// <param name="cancellationToken">取消令牌。</param>
  100. /// <returns>任务完成后的域名潜在客户搜索结果响应。</returns>
  101. Task<SnovioDomainProspectsSearchResultResponse> SearchDomainProspectsAsync(
  102. SnovioDomainProspectsSearchRequest request,
  103. TimeSpan? timeout = null,
  104. TimeSpan? pollInterval = null,
  105. CancellationToken cancellationToken = default);
  106. /// <summary>
  107. /// 创建指定潜客的邮箱检索任务。
  108. /// </summary>
  109. /// <param name="prospectHash">域名潜客搜索结果中返回的 prospect_hash,用于定位单个潜客。</param>
  110. /// <param name="request">邮箱检索请求体,可选,目前支持 webhook_url 回调地址。</param>
  111. /// <param name="cancellationToken">取消令牌。</param>
  112. /// <returns>包含邮箱检索 task_hash 和结果地址的异步任务响应。</returns>
  113. Task<SnovioProspectEmailSearchStartResponse> StartProspectEmailSearchAsync(
  114. string prospectHash,
  115. SnovioProspectEmailSearchRequest? request = null,
  116. CancellationToken cancellationToken = default);
  117. /// <summary>
  118. /// 根据 task_hash 获取潜客邮箱检索任务当前结果。
  119. /// </summary>
  120. /// <param name="taskHash">邮箱检索任务的 task_hash。</param>
  121. /// <param name="cancellationToken">取消令牌。</param>
  122. /// <returns>潜客邮箱检索结果响应;任务未完成时可返回处理中状态。</returns>
  123. Task<SnovioProspectEmailSearchResultResponse> GetProspectEmailSearchResultAsync(
  124. string taskHash,
  125. CancellationToken cancellationToken = default);
  126. /// <summary>
  127. /// 按指定间隔轮询潜客邮箱检索任务,直到任务完成、失败或超时。
  128. /// </summary>
  129. /// <param name="taskHash">邮箱检索任务的 task_hash。</param>
  130. /// <param name="timeout">最大等待时间,未指定时默认 2 分钟。</param>
  131. /// <param name="pollInterval">两次结果查询之间的间隔,未指定时默认 3 秒。</param>
  132. /// <param name="cancellationToken">取消令牌。</param>
  133. /// <returns>任务完成后的潜客邮箱检索结果响应。</returns>
  134. /// <exception cref="TimeoutException">任务在最大等待时间内未完成时抛出。</exception>
  135. /// <exception cref="InvalidOperationException">Snov.io 返回任务失败状态时抛出。</exception>
  136. Task<SnovioProspectEmailSearchResultResponse> WaitForProspectEmailSearchResultAsync(
  137. string taskHash,
  138. TimeSpan? timeout = null,
  139. TimeSpan? pollInterval = null,
  140. CancellationToken cancellationToken = default);
  141. /// <summary>
  142. /// 创建潜客邮箱检索任务并轮询等待实际邮箱结果。
  143. /// </summary>
  144. /// <param name="prospectHash">域名潜客搜索结果中返回的 prospect_hash,用于定位单个潜客。</param>
  145. /// <param name="request">邮箱检索请求体,可选,目前支持 webhook_url 回调地址。</param>
  146. /// <param name="timeout">最大等待时间,未指定时默认 2 分钟。</param>
  147. /// <param name="pollInterval">两次结果查询之间的间隔,未指定时默认 3 秒。</param>
  148. /// <param name="cancellationToken">取消令牌。</param>
  149. /// <returns>任务完成后的潜客邮箱检索结果响应。</returns>
  150. Task<SnovioProspectEmailSearchResultResponse> SearchProspectEmailAsync(
  151. string prospectHash,
  152. SnovioProspectEmailSearchRequest? request = null,
  153. TimeSpan? timeout = null,
  154. TimeSpan? pollInterval = null,
  155. CancellationToken cancellationToken = default);
  156. }