Untitled
unknown
plain_text
2 years ago
2.8 kB
36
Indexable
import Foundation
import UIKit
extension ParentChatController {
var appDelegate : AppDelegate {
return UIApplication.shared.delegate as! AppDelegate
}
}
class ParentChatController : MessagesViewController {
@objc var messageId: String?
@objc var messageTitle: String?
var pageNumber = 0;
var userMessageId = ""
override func viewDidLoad() {
userMessageId = messageId ?? ""
let str_url = "API GOES HERE"
sendRequest(str_url, parameters: ["message_id": MESSAGE_ID, "page_number": String(PAGE_NUMBER)]) { responseObject, error in
guard let responseObject = responseObject, error == nil else {
print(error ?? "Unknown error")
return
}
print(responseObject.messages.count)
}
}
func sendRequest(_ url: String, parameters: [String: String], completion: @escaping (ChatResponse?, Error?) -> Void) {
var components = URLComponents(string: url)!
components.queryItems = parameters.map { (key, value) in
URLQueryItem(name: key, value: value)
}
var request = URLRequest(url: components.url!)
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
let authValue = "Bearer \(String(describing: appDelegate.token!))"
request.setValue(AUTH_VALUE, forHTTPHeaderField: "Authorization")
print(request)
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard
let data = data,
let response = response as? HTTPURLResponse,
200 ..< 300 ~= response.statusCode,
error == nil
else {
completion(nil, error)
return
}
//let responseObject = (try? JSONSerialization.jsonObject(with: data)) as? [ChatResponse]
let chatResponse = try? JSONDecoder().decode(ChatResponse.self, from: data)
completion(chatResponse, nil)
}
task.resume()
}
}
struct ChatResponse: Codable {
let status: String
let messages: [Message]
let totalRows: Int
enum CodingKeys: String, CodingKey {
case status, messages
case totalRows = "total_rows"
}
}
// MARK: - Message
struct Message: Codable {
let chatTime: String
let createdAt: Int
let senderName: String
let receiverName: String
let senderType: Int
let message: String
let id: Int
enum CodingKeys: String, CodingKey {
case chatTime = "chat_time"
case createdAt = "created_at"
case senderName = "sender_name"
case receiverName = "receiver_name"
case senderType = "sender_type"
case message, id
}
}
Editor is loading...
Leave a Comment