SwiftMoyaServiceCommunityApi.swift 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363
  1. //
  2. // SwiftMoyaServiceCommunityApi.swift
  3. // RainbowPlanet
  4. //
  5. // Created by 南鑫林 on 2019/6/24.
  6. // Copyright © 2019 RainbowPlanet. All rights reserved.
  7. //
  8. import Foundation
  9. import Moya
  10. // MARK: - 话题组列表
  11. /// 话题组列表
  12. public let kCommunityTopicCategoryApi = "/community/topicCategory"
  13. // MARK: - 关注推荐话题
  14. /// 关注推荐话题
  15. public let kCommunityMemberFollowTopicApi = "/community/memberFollowTopic"
  16. // MARK: - 个人中心内容
  17. /// 个人中心内容
  18. public let kCommunityPostMyApi = "/community/post/my"
  19. // MARK: - 话题列表
  20. /// 话题列表
  21. public let kCommunityTopicsApi = "/community/topic"
  22. // MARK: - 内容列表
  23. /// 内容列表(Get)
  24. public let kCommunityPostsApi = "/community/post"
  25. // MARK: - 发布内容
  26. /// 发布内容(Post)
  27. public let kCommunityPublishApi = "/community/post"
  28. // MARK: - 删除内容
  29. /// 删除内容(Post)
  30. public let kCommunityDeleteApi = "/community/post"
  31. // MARK: - 获取上传地址和凭证
  32. /// 获取上传地址和凭证
  33. public let kCommunityVideoUploadAuthApi = "/community/getVodUploadAuth"
  34. // MARK: - 视频列表
  35. /// 视频列表
  36. public let kCommunityVideoListApi = "/community/post/video"
  37. // MARK: - 关注页面feed流
  38. /// 关注页面feed流
  39. public let kCommunityFollowFeedApi = "/community/feed"
  40. // MARK: - 推荐内容
  41. /// 推荐内容
  42. public let kCommunityPostSuggestApi = "/community/post/suggest"
  43. // MARK: - 话题详情
  44. /// 话题详情
  45. public let kCommunityTopicDetailApi = "/community/topic/detail"
  46. // MARK: - 话题内容列表
  47. /// 话题内容列表
  48. public let kCommunityPostTopicApi = "/community/post/topic"
  49. // MARK: - 我关注的话题列表
  50. /// 我关注的话题列表
  51. public let kCommunityMemberFollowTopicListApi = "/community/memberFollowTopic"
  52. // MARK: - 关注话题(单个)
  53. /// 关注话题(单个)
  54. public let kCommunityMemberFollowTopicFollowApi = "/community/memberFollowTopic/follow"
  55. // MARK: - 取消关注话题
  56. /// 取消关注话题
  57. public let kCommunityMemberFollowTopicCancelFollowApi = "/community/memberFollowTopic/cancel"
  58. // MARK: - 内容详情
  59. /// 内容详情
  60. public let kCommunityPostDetailApi = "/community/post/detail"
  61. // MARK: - 评论列表
  62. /// 评论列表
  63. public let kCommunityPostCommentsApi = "/community/post/comment"
  64. // MARK: - 回复列表
  65. /// 回复列表
  66. public let kCommunityPostReplyApi = "/community/post/reply"
  67. //// MARK: - 评论&回复
  68. ///// 评论&回复
  69. public let kCommunityPostCommentApi = "/community/post/comment"
  70. //// MARK: - 用户上传音乐
  71. ///// 用户上传音乐
  72. public let kCommunityUploadMusicApi = "/community/music/upload"
  73. //// MARK: - 热门推荐音乐列表
  74. ///// 热门推荐音乐列表
  75. public let kCommunityRecMusicListApi = "/community/musicList"
  76. //// MARK: - 获取音乐分类
  77. ///// 获取音乐分类
  78. public let kCommunityGetMusicCategoryApi = "/community/category/list"
  79. //// MARK: - 获取分类下所有音乐
  80. ///// 获取分类下所有音乐
  81. public let kCommunityCateMusicListApi = "/community/music"
  82. /// 社区
  83. ///
  84. /// - communityTopicCategory: 话题组列表
  85. /// - communityMemberFollowTopic: 关注推荐话题
  86. /// - communityPostMy: 个人中心内容
  87. /// - communityTopics: 话题列表
  88. /// - communityPosts: 内容列表
  89. /// - communityPublish: 发布内容
  90. /// - communityVideoUploadAuth: 视频上传凭证
  91. /// - communityVideoList: 视频列表
  92. /// - communityFeed: 关注页面feed流
  93. /// - communityPostSuggest: 关注页面feed流
  94. /// - communityTopicDetail: 话题详情
  95. /// - communityPostTopic: 话题内容列表
  96. /// - communityMemberFollowTopicList: 我关注的话题列表
  97. /// - communityMemberFollowTopicFollow: 关注话题(单个)
  98. /// - communityMemberFollowTopicCancelFollow: 取消关注话题
  99. /// - communityPostDetail: 内容详情
  100. /// - communityPostComments : 评论列表
  101. /// - communityPostReply : 回复列表
  102. /// - communityPostComment : 评论&回复
  103. /// - communityUploadMusic : 用户上传音乐
  104. /// - communityRecMusicList : 热门推荐音乐列表
  105. /// - communityGetMusicCategory : 获取音乐分类
  106. /// - communityCateMusicList : 获取分类下所有音乐
  107. public enum SwiftMoyaServiceCommunityApi {
  108. case communityTopicCategory(parameters:Dictionary<String, Any>)
  109. case communityMemberFollowTopic(parameters:Dictionary<String, Any>)
  110. case communityPostMy(parameters:Dictionary<String, Any>)
  111. case communityTopics(parameters:Dictionary<String, Any>)
  112. case communityPosts(parameters:Dictionary<String, Any>)
  113. case communityPublish(parameters:Dictionary<String, Any>)
  114. case communityDelete(parameters:Dictionary<String, Any>)
  115. case communityVideoUploadAuth(parameters:Dictionary<String, Any>)
  116. case communityVideoList(parameters:Dictionary<String, Any>)
  117. case communityFollowFeed(parameters:Dictionary<String, Any>)
  118. case communityPostSuggest(parameters:Dictionary<String, Any>)
  119. case communityTopicDetail(parameters:Dictionary<String, Any>)
  120. case communityPostTopic(parameters:Dictionary<String, Any>)
  121. case communityMemberFollowTopicList(parameters:Dictionary<String, Any>)
  122. case communityMemberFollowTopicFollow(parameters:Dictionary<String, Any>)
  123. case communityMemberFollowTopicCancelFollow(parameters:Dictionary<String, Any>)
  124. case communityPostDetail(parameters:Dictionary<String, Any>)
  125. case communityPostComments(parameters:Dictionary<String, Any>)
  126. case communityPostReply(parameters:Dictionary<String, Any>)
  127. case communityPostComment(parameters:Dictionary<String, Any>)
  128. case communityUploadMusic(parameters:Dictionary<String, Any>)
  129. case communityRecMusicList(parameters:Dictionary<String, Any>)
  130. case communityGetMusicCategory(parameters:Dictionary<String, Any>)
  131. case communityCateMusicList(parameters:Dictionary<String, Any>)
  132. }
  133. extension SwiftMoyaServiceCommunityApi: TargetType {
  134. public var baseURL: URL {
  135. switch self {
  136. case .communityTopicCategory,
  137. .communityMemberFollowTopic,
  138. .communityPostMy,
  139. .communityTopics,
  140. .communityPosts,
  141. .communityPublish,
  142. .communityDelete,
  143. .communityVideoUploadAuth,
  144. .communityVideoList,
  145. .communityFollowFeed,
  146. .communityPostSuggest,
  147. .communityTopicDetail,
  148. .communityPostTopic,
  149. .communityMemberFollowTopicList,
  150. .communityMemberFollowTopicFollow,
  151. .communityMemberFollowTopicCancelFollow,
  152. .communityPostDetail,
  153. .communityPostComments,
  154. .communityPostReply,
  155. .communityPostComment,
  156. .communityUploadMusic,
  157. .communityRecMusicList,
  158. .communityGetMusicCategory,
  159. .communityCateMusicList
  160. :
  161. return URL(string: kApiDataPrefix())!
  162. }
  163. }
  164. public var path: String {
  165. switch self {
  166. case .communityTopicCategory:
  167. return kCommunityTopicCategoryApi
  168. case .communityMemberFollowTopic:
  169. return kCommunityMemberFollowTopicApi
  170. case .communityPostMy:
  171. return kCommunityPostMyApi
  172. case .communityTopics:
  173. return kCommunityTopicsApi
  174. case .communityPosts:
  175. return kCommunityPostsApi
  176. case .communityPublish:
  177. return kCommunityPublishApi
  178. case .communityDelete:
  179. return kCommunityDeleteApi
  180. case .communityVideoUploadAuth:
  181. return kCommunityVideoUploadAuthApi
  182. case .communityVideoList:
  183. return kCommunityVideoListApi
  184. case .communityFollowFeed:
  185. return kCommunityFollowFeedApi
  186. case .communityPostSuggest:
  187. return kCommunityPostSuggestApi
  188. case .communityTopicDetail:
  189. return kCommunityTopicDetailApi
  190. case .communityPostTopic:
  191. return kCommunityPostTopicApi
  192. case .communityMemberFollowTopicList:
  193. return kCommunityMemberFollowTopicListApi
  194. case .communityMemberFollowTopicFollow:
  195. return kCommunityMemberFollowTopicFollowApi
  196. case .communityMemberFollowTopicCancelFollow:
  197. return kCommunityMemberFollowTopicCancelFollowApi
  198. case .communityPostDetail:
  199. return kCommunityPostDetailApi
  200. case .communityPostComments:
  201. return kCommunityPostCommentsApi
  202. case .communityPostReply:
  203. return kCommunityPostReplyApi
  204. case .communityPostComment:
  205. return kCommunityPostCommentApi
  206. case .communityUploadMusic:
  207. return kCommunityUploadMusicApi
  208. case .communityRecMusicList:
  209. return kCommunityRecMusicListApi
  210. case .communityGetMusicCategory:
  211. return kCommunityGetMusicCategoryApi
  212. case .communityCateMusicList:
  213. return kCommunityCateMusicListApi
  214. }
  215. }
  216. public var method: Moya.Method {
  217. switch self {
  218. case .communityMemberFollowTopic,
  219. .communityPublish,
  220. .communityMemberFollowTopicFollow,
  221. .communityPostComment,
  222. .communityUploadMusic
  223. :
  224. return .post
  225. case .communityTopicCategory,
  226. .communityPostMy,
  227. .communityTopics,
  228. .communityPosts,
  229. .communityVideoUploadAuth,
  230. .communityVideoList,
  231. .communityFollowFeed,
  232. .communityPostSuggest,
  233. .communityTopicDetail,
  234. .communityPostTopic,
  235. .communityMemberFollowTopicList,
  236. .communityPostDetail,
  237. .communityPostComments,
  238. .communityPostReply,
  239. .communityRecMusicList,
  240. .communityGetMusicCategory,
  241. .communityCateMusicList
  242. :
  243. return .get
  244. case .communityMemberFollowTopicCancelFollow,
  245. .communityDelete
  246. :
  247. return .delete
  248. }
  249. }
  250. // MARK: - 请求任务事件(这里附带上参数)
  251. public var task: Task {
  252. switch self {
  253. case .communityTopicCategory(var parameters),
  254. .communityMemberFollowTopic(var parameters),
  255. .communityPostMy(var parameters),
  256. .communityTopics(var parameters),
  257. .communityPosts(var parameters),
  258. .communityPublish(var parameters),
  259. .communityDelete(var parameters),
  260. .communityVideoUploadAuth(var parameters),
  261. .communityVideoList(var parameters),
  262. .communityFollowFeed(var parameters),
  263. .communityPostSuggest(var parameters),
  264. .communityTopicDetail(var parameters),
  265. .communityPostTopic(var parameters),
  266. .communityMemberFollowTopicList(var parameters),
  267. .communityMemberFollowTopicFollow(var parameters),
  268. .communityMemberFollowTopicCancelFollow(var parameters),
  269. .communityPostDetail(var parameters),
  270. .communityPostComments(var parameters),
  271. .communityPostReply(var parameters),
  272. .communityPostComment(var parameters),
  273. .communityUploadMusic(var parameters),
  274. .communityRecMusicList(var parameters),
  275. .communityGetMusicCategory(var parameters),
  276. .communityCateMusicList(var parameters)
  277. :
  278. let sign = SwiftSign.shared().sign(signType:.AccessToken, parameters: parameters)
  279. parameters.updateValue(sign, forKey: "sign")
  280. return .requestParameters(parameters: parameters, encoding: URLEncoding.default)
  281. }
  282. }
  283. // MARK: - 是否执行Alamofire验证
  284. public var validate: Bool {
  285. return false
  286. }
  287. // MARK: - 这个就是做单元测试模拟的数据,只会在单元测试文件中有作用
  288. public var sampleData: Data {
  289. return "{}".data(using: String.Encoding.utf8)!
  290. }
  291. // MARK: - 请求头
  292. public var headers: [String : String]? {
  293. //同task,具体选择看后台 有application/x-www-form-urlencoded 、application/json
  294. switch self {
  295. case .communityTopicCategory,
  296. .communityMemberFollowTopic,
  297. .communityPostMy,
  298. .communityTopics,
  299. .communityPosts,
  300. .communityPublish,
  301. .communityDelete,
  302. .communityVideoUploadAuth,
  303. .communityVideoList,
  304. .communityFollowFeed,
  305. .communityPostSuggest,
  306. .communityTopicDetail,
  307. .communityPostTopic,
  308. .communityMemberFollowTopicList,
  309. .communityMemberFollowTopicFollow,
  310. .communityMemberFollowTopicCancelFollow,
  311. .communityPostDetail,
  312. .communityPostComments,
  313. .communityPostReply,
  314. .communityPostComment,
  315. .communityUploadMusic,
  316. .communityRecMusicList,
  317. .communityGetMusicCategory,
  318. .communityCateMusicList
  319. :
  320. return (headerParameters(headerType: .tokenHeader) as! [String : String])
  321. }
  322. }
  323. }