PageRenderTime 50ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/trunk/source/Stacky/StackyClient/AnswerMethods.cs

#
C# | 178 lines | 92 code | 8 blank | 78 comment | 0 complexity | a92a0826ea8b938d587ba0ba97018953 MD5 | raw file
  1. using System.Collections.Generic;
  2. using System;
  3. using System.Linq;
  4. namespace Stacky
  5. {
  6. /// <summary>
  7. ///
  8. /// </summary>
  9. public partial class StackyClient
  10. {
  11. /// <summary>
  12. /// Gets the users answers.
  13. /// </summary>
  14. /// <param name="userId">The user id.</param>
  15. /// <param name="sortBy">The sort by.</param>
  16. /// <param name="sortDirection">The sort direction.</param>
  17. /// <param name="page">The page.</param>
  18. /// <param name="pageSize">Size of the page.</param>
  19. /// <param name="includeBody">if set to <c>true</c> [include body].</param>
  20. /// <param name="includeComments">if set to <c>true</c> [include comments].</param>
  21. /// <param name="min">The min.</param>
  22. /// <param name="max">The max.</param>
  23. /// <param name="fromDate">From date.</param>
  24. /// <param name="toDate">To date.</param>
  25. /// <returns></returns>
  26. public virtual IPagedList<Answer> GetUsersAnswers(int userId, QuestionsByUserSort sortBy = QuestionsByUserSort.Activity, SortDirection sortDirection = SortDirection.Descending, int? page = null, int? pageSize = null, bool includeBody = false, bool includeComments = false, int? min = null, int? max = null, DateTime? fromDate = null, DateTime? toDate = null)
  27. {
  28. return GetUsersAnswers(userId.ToArray(), sortBy, sortDirection, page, pageSize, includeBody, includeComments, min, max, fromDate, toDate);
  29. }
  30. /// <summary>
  31. /// Gets the users answers.
  32. /// </summary>
  33. /// <param name="userIds">The user ids.</param>
  34. /// <param name="sortBy">The sort by.</param>
  35. /// <param name="sortDirection">The sort direction.</param>
  36. /// <param name="page">The page.</param>
  37. /// <param name="pageSize">Size of the page.</param>
  38. /// <param name="includeBody">if set to <c>true</c> [include body].</param>
  39. /// <param name="includeComments">if set to <c>true</c> [include comments].</param>
  40. /// <param name="min">The min.</param>
  41. /// <param name="max">The max.</param>
  42. /// <param name="fromDate">From date.</param>
  43. /// <param name="toDate">To date.</param>
  44. /// <returns></returns>
  45. public virtual IPagedList<Answer> GetUsersAnswers(IEnumerable<int> userIds, QuestionsByUserSort sortBy = QuestionsByUserSort.Creation, SortDirection sortDirection = SortDirection.Descending, int? page = null, int? pageSize = null, bool includeBody = false, bool includeComments = false, int? min = null, int? max = null, DateTime? fromDate = null, DateTime? toDate = null)
  46. {
  47. var response = MakeRequest<AnswerResponse>("users", new string[] { userIds.Vectorize(), "answers" }, new
  48. {
  49. key = apiKey,
  50. page = page ?? null,
  51. pagesize = pageSize ?? null,
  52. body = includeBody ? (bool?)true : null,
  53. comments = includeComments ? (bool?)true : null,
  54. sort = sortBy.ToString().ToLower(),
  55. order = GetSortDirection(sortDirection),
  56. min = min ?? null,
  57. max = max ?? null,
  58. fromdate = fromDate.HasValue ? (long?)fromDate.Value.ToUnixTime() : null,
  59. todate = toDate.HasValue ? (long?)toDate.Value.ToUnixTime() : null
  60. });
  61. return new PagedList<Answer>(response.Answers, response);
  62. }
  63. /// <summary>
  64. /// Gets the question answers.
  65. /// </summary>
  66. /// <param name="questionIds">The question ids.</param>
  67. /// <param name="sortBy">The sort by.</param>
  68. /// <param name="sortDirection">The sort direction.</param>
  69. /// <param name="page">The page.</param>
  70. /// <param name="pageSize">Size of the page.</param>
  71. /// <param name="includeBody">if set to <c>true</c> [include body].</param>
  72. /// <param name="includeComments">if set to <c>true</c> [include comments].</param>
  73. /// <param name="min">The min.</param>
  74. /// <param name="max">The max.</param>
  75. /// <param name="fromDate">From date.</param>
  76. /// <param name="toDate">To date.</param>
  77. /// <returns></returns>
  78. public virtual IPagedList<Answer> GetQuestionAnswers(IEnumerable<int> questionIds, QuestionsByUserSort sortBy = QuestionsByUserSort.Activity, SortDirection sortDirection = SortDirection.Descending, int? page = null, int? pageSize = null, bool includeBody = false, bool includeComments = false, int? min = null, int? max = null, DateTime? fromDate = null, DateTime? toDate = null)
  79. {
  80. var response = MakeRequest<AnswerResponse>("questions", new string[] { questionIds.Vectorize(), "answers" }, new
  81. {
  82. key = apiKey,
  83. page = page ?? null,
  84. pagesize = pageSize ?? null,
  85. body = includeBody ? (bool?)true : null,
  86. sort = sortBy.ToString().ToLower(),
  87. order = GetSortDirection(sortDirection),
  88. min = min ?? null,
  89. max = max ?? null,
  90. fromdate = fromDate.HasValue ? (long?)fromDate.Value.ToUnixTime() : null,
  91. todate = toDate.HasValue ? (long?)toDate.Value.ToUnixTime() : null
  92. });
  93. return new PagedList<Answer>(response.Answers, response);
  94. }
  95. /// <summary>
  96. /// Gets the question answers.
  97. /// </summary>
  98. /// <param name="questionId">The question id.</param>
  99. /// <param name="sortBy">The sort by.</param>
  100. /// <param name="sortDirection">The sort direction.</param>
  101. /// <param name="page">The page.</param>
  102. /// <param name="pageSize">Size of the page.</param>
  103. /// <param name="includeBody">if set to <c>true</c> [include body].</param>
  104. /// <param name="includeComments">if set to <c>true</c> [include comments].</param>
  105. /// <param name="min">The min.</param>
  106. /// <param name="max">The max.</param>
  107. /// <param name="fromDate">From date.</param>
  108. /// <param name="toDate">To date.</param>
  109. /// <returns></returns>
  110. public virtual IPagedList<Answer> GetQuestionAnswers(int questionId, QuestionsByUserSort sortBy = QuestionsByUserSort.Activity, SortDirection sortDirection = SortDirection.Descending, int? page = null, int? pageSize = null, bool includeBody = false, bool includeComments = false, int? min = null, int? max = null, DateTime? fromDate = null, DateTime? toDate = null)
  111. {
  112. return GetQuestionAnswers(questionId.ToArray(), sortBy, sortDirection, page, pageSize, includeBody, includeComments, min, max, fromDate, toDate);
  113. }
  114. public virtual Answer GetAnswer(int answerId, bool includeBody = true, bool includeComments = true)
  115. {
  116. return GetAnswers(answerId.ToArray(), includeBody: includeBody, includeComments : includeComments).FirstOrDefault();
  117. }
  118. public virtual IPagedList<Answer> GetAnswers(IEnumerable<int> answerIds, AnswerSort sortBy = AnswerSort.Activity, SortDirection sortDirection = SortDirection.Descending, int? page = null, int? pageSize = null, bool includeBody = false, bool includeComments = false, int? min = null, int? max = null, DateTime? fromDate = null, DateTime? toDate = null)
  119. {
  120. var response = MakeRequest<AnswerResponse>("answers", new string[] { answerIds.Vectorize() }, new
  121. {
  122. key = apiKey,
  123. page = page ?? null,
  124. pagesize = pageSize ?? null,
  125. body = includeBody ? (bool?)true : null,
  126. sort = sortBy.ToString().ToLower(),
  127. order = GetSortDirection(sortDirection),
  128. min = min ?? null,
  129. max = max ?? null,
  130. fromdate = fromDate.HasValue ? (long?)fromDate.Value.ToUnixTime() : null,
  131. todate = toDate.HasValue ? (long?)toDate.Value.ToUnixTime() : null
  132. });
  133. return new PagedList<Answer>(response.Answers, response);
  134. }
  135. /// <summary>
  136. /// Returns all the answers in the system
  137. /// </summary>
  138. /// <param name="sortBy">How a collection should be sorted.</param>
  139. /// <param name="sortDirection"></param>
  140. /// <param name="page">The pagination offset for the current collection. Affected by the specified pagesize.</param>
  141. /// <param name="pageSize">The number of collection results to display during pagination. Should be between 0 and 100 inclusive.</param>
  142. /// <param name="includeBody">When "true", a post's body will be included in the response.</param>
  143. /// <param name="includeComments">When "true", any comments on a post will be included in the response.</param>
  144. /// <param name="includeAnswers"> When "true", the answers to a question will be returned</param>
  145. /// <param name="min">Minimum of the range to include in the response according to the current sort.</param>
  146. /// <param name="max">Maximum of the range to include in the response according to the current sort.</param>
  147. /// <param name="fromDate">Unix timestamp of the minimum creation date on a returned item.</param>
  148. /// <param name="toDate">Unix timestamp of the maximum creation date on a returned item.</param>
  149. /// <returns></returns>
  150. public virtual IPagedList<Answer> GetAnswers(AnswerSort sortBy = AnswerSort.Activity, SortDirection sortDirection = SortDirection.Descending, int? page = null, int? pageSize = null, bool includeBody = false, bool includeComments = false, bool includeAnswers = false, int? min = null, int? max = null, DateTime? fromDate = null, DateTime? toDate = null)
  151. {
  152. var response = MakeRequest<AnswerResponse>("answers", null, new
  153. {
  154. key = apiKey,
  155. page = page ?? null,
  156. pagesize = pageSize ?? null,
  157. body = includeBody ? (bool?)true : null,
  158. comments = includeComments ? (bool?)true : null,
  159. answers = includeAnswers ? (bool?)true : null,
  160. sort = sortBy.ToString().ToLower(),
  161. order = GetSortDirection(sortDirection),
  162. min = min ?? null,
  163. max = max ?? null,
  164. fromdate = fromDate.HasValue ? (long?)fromDate.Value.ToUnixTime() : null,
  165. todate = toDate.HasValue ? (long?)toDate.Value.ToUnixTime() : null
  166. });
  167. return new PagedList<Answer>(response.Answers, response);
  168. }
  169. }
  170. }