TSNetWork+Business.swift 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. //
  2. // TSNetWork+Business.swift
  3. // AIEmoji
  4. //
  5. // Created by 100Years on 2025/1/16.
  6. //
  7. /// 基础 URL(根据需求修改)
  8. private let baseURL = "http://ai.100yearslater.com"
  9. import Alamofire
  10. enum TSNeURLType:String {
  11. case imageEmoji = "/api/image/emoji" //文生emoji
  12. case actionInfo = "/api/action/info" //查询生成过程接口
  13. case chat = "/api/text/chat" //AI 对话接口
  14. case textPicCreate = "/api/image/create" //文生图
  15. func getUrlString() -> String {
  16. return baseURL + self.rawValue
  17. }
  18. }
  19. extension TSNetworkManager {
  20. /// 通用 get 请求
  21. func get<T: TSBaseModel>(
  22. urlType: TSNeURLType,
  23. parameters: [String: Any]? = nil,
  24. responseType: T.Type? = nil,
  25. completion: @escaping (Result<Any, Error>) -> Void
  26. ) {
  27. let urlString = urlType.getUrlString()
  28. request(method: .get, urlString: urlString, parameters:parameters) { result in
  29. completion(result)
  30. }
  31. }
  32. /// 通用 POST 请求
  33. /// - Parameters:
  34. /// - endpoint: 接口路径
  35. /// - parameters: 请求参数
  36. /// - responseType: 响应数据模型(可选)
  37. /// - completion: 请求完成的回调
  38. func post<T: TSBaseModel>(
  39. urlType: TSNeURLType,
  40. parameters: [String: Any]? = nil,
  41. responseType: T.Type? = nil,
  42. completion: @escaping (Result<Any, Error>) -> Void
  43. ) {
  44. let urlString = urlType.getUrlString()
  45. request(method: .post, urlString: urlString, parameters:parameters) { result in
  46. completion(result)
  47. }
  48. }
  49. // /// 通用 POST Stream 请求
  50. // /// - Parameters:
  51. // /// - endpoint: 接口路径
  52. // /// - parameters: 请求参数
  53. // /// - responseType: 响应数据模型(可选)
  54. // /// - completion: 请求完成的回调
  55. // func postStream<T: TSBaseModel>(
  56. // urlType: TSNeURLType,
  57. // parameters: [String: Any]? = nil,
  58. // responseType: T.Type? = nil,
  59. // streamHandler:@escaping (String) -> Void,
  60. // completion: @escaping (Result<Any, Error>) -> Void
  61. // ) -> StreamPostRequest{
  62. // let urlString = urlType.getUrlString()
  63. //
  64. // let streamRequest = StreamPostRequest(url: URL(string: urlString)!, parameters: parameters) { data in
  65. // if let string = String(data: data, encoding: .utf8) {
  66. // print("Received chunk: \(string)")
  67. // streamHandler(string)
  68. // }
  69. // } completionHandler: { error in
  70. // if let error = error {
  71. // print("Request failed with error: \(error)")
  72. // completion(.failure(error))
  73. // } else {
  74. // print("Request completed successfully.")
  75. // completion(.success("success"))
  76. // }
  77. // }
  78. // streamRequest.startRequest()
  79. // return streamRequest
  80. // }
  81. /// 通用 POST Stream 请求
  82. /// - Parameters:
  83. /// - endpoint: 接口路径
  84. /// - parameters: 请求参数
  85. /// - responseType: 响应数据模型(可选)
  86. /// - completion: 请求完成的回调
  87. func postStream<T: TSBaseModel>(
  88. urlType: TSNeURLType,
  89. parameters: [String: Any]? = nil,
  90. responseType: T.Type? = nil,
  91. streamHandler:@escaping (String) -> Void,
  92. completion: @escaping (Result<Any, Error>) -> Void
  93. ) -> DataStreamRequest?{
  94. let urlString = urlType.getUrlString()
  95. let streamRequest = postStreamRequest(urlString: urlString, parameters: parameters, streamHandler: streamHandler, completion: completion)
  96. return streamRequest
  97. }
  98. }