158 lines
5.7 KiB
Swift
158 lines
5.7 KiB
Swift
//
|
|
// Example
|
|
// man
|
|
//
|
|
// Created by man 11/11/2018.
|
|
// Copyright © 2020 man. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
import UIKit
|
|
|
|
class NetworkCell: UITableViewCell {
|
|
|
|
@IBOutlet weak var leftAlignLine: UILabel!
|
|
@IBOutlet weak var statusCodeLabel: UILabel!
|
|
@IBOutlet weak var methodLabel: UILabel!
|
|
@IBOutlet weak var requestTimeTextView: CustomTextView!
|
|
@IBOutlet weak var requestUrlTextView: CustomTextView!
|
|
@IBOutlet weak var imageLabel: UILabel!
|
|
@IBOutlet weak var statusCodeView: UIView!
|
|
|
|
var index: NSInteger = 0
|
|
|
|
var httpModel: _HttpModel? {
|
|
didSet {
|
|
|
|
guard let serverURL = CocoaDebugSettings.shared.serverURL else {return}
|
|
|
|
//domain name
|
|
requestUrlTextView.text = httpModel?.url.absoluteString
|
|
if requestUrlTextView.text?.contains(serverURL) == true {
|
|
if #available(iOS 8.2, *) {
|
|
requestUrlTextView.font = UIFont.systemFont(ofSize: 13, weight: .heavy)
|
|
} else {
|
|
// Fallback on earlier versions
|
|
requestUrlTextView.font = UIFont.boldSystemFont(ofSize: 13)
|
|
}
|
|
} else {
|
|
if #available(iOS 8.2, *) {
|
|
requestUrlTextView.font = UIFont.systemFont(ofSize: 13, weight: .regular)
|
|
} else {
|
|
// Fallback on earlier versions
|
|
requestUrlTextView.font = UIFont.systemFont(ofSize: 13)
|
|
}
|
|
}
|
|
|
|
//Request method
|
|
if let method = httpModel?.method {
|
|
methodLabel.text = "[" + method + "]"
|
|
}
|
|
|
|
//Request time
|
|
if let startTime = httpModel?.startTime {
|
|
if (startTime as NSString).doubleValue == 0 {
|
|
requestTimeTextView.text = _OCLoggerFormat.formatDate(Date())
|
|
} else {
|
|
requestTimeTextView.text = _OCLoggerFormat.formatDate(NSDate(timeIntervalSince1970: (startTime as NSString).doubleValue) as Date)
|
|
}
|
|
}
|
|
|
|
//https://httpcodes.co/status/
|
|
let successStatusCodes = ["200","201","202","203","204","205","206","207","208","226"]
|
|
let informationalStatusCodes = ["100","101","102","103","122"]
|
|
let redirectionStatusCodes = ["300","301","302","303","304","305","306","307","308"]
|
|
|
|
//status code
|
|
statusCodeLabel.text = httpModel?.statusCode
|
|
|
|
if successStatusCodes.contains(statusCodeLabel.text ?? "") {
|
|
statusCodeLabel.textColor = "#42d459".hexColor
|
|
}
|
|
else if informationalStatusCodes.contains(statusCodeLabel.text ?? "") {
|
|
statusCodeLabel.textColor = "#4b8af7".hexColor
|
|
}
|
|
else if redirectionStatusCodes.contains(statusCodeLabel.text ?? "") {
|
|
statusCodeLabel.textColor = "#ff9800".hexColor
|
|
}
|
|
else {
|
|
statusCodeLabel.textColor = "#ff0000".hexColor
|
|
}
|
|
|
|
if statusCodeLabel.text == "0" { //"0" means network unavailable
|
|
statusCodeLabel.text = "❌"
|
|
}
|
|
|
|
//Whether to display the image label
|
|
if httpModel?.isImage == true
|
|
{
|
|
imageLabel.isHidden = false
|
|
imageLabel.text = "Image"
|
|
}
|
|
else
|
|
{
|
|
//js css
|
|
if let urlString = httpModel?.url.absoluteString {
|
|
if urlString.suffix(3) == ".js" {
|
|
imageLabel.isHidden = false
|
|
imageLabel.text = "JavaScript"
|
|
} else if urlString.suffix(4) == ".css" {
|
|
imageLabel.isHidden = false
|
|
imageLabel.text = "CSS"
|
|
} else {
|
|
imageLabel.isHidden = true
|
|
}
|
|
} else {
|
|
imageLabel.isHidden = true
|
|
}
|
|
}
|
|
|
|
//tag
|
|
if httpModel?.isTag == true {
|
|
self.contentView.backgroundColor = "#007aff".hexColor
|
|
} else {
|
|
self.contentView.backgroundColor = .black
|
|
}
|
|
|
|
//isSelected
|
|
if httpModel?.isSelected == true {
|
|
statusCodeView.backgroundColor = "#222222".hexColor
|
|
} else {
|
|
statusCodeView.backgroundColor = "#333333".hexColor
|
|
}
|
|
}
|
|
}
|
|
|
|
//MARK: - awakeFromNib
|
|
override func awakeFromNib() {
|
|
super.awakeFromNib()
|
|
|
|
imageLabel.backgroundColor = Color.mainGreen
|
|
requestTimeTextView.textColor = Color.mainGreen
|
|
|
|
requestTimeTextView.textContainer.lineFragmentPadding = 0
|
|
requestTimeTextView.textContainerInset = .zero
|
|
requestTimeTextView.isSelectable = false
|
|
|
|
requestUrlTextView.textContainer.lineFragmentPadding = 0
|
|
requestUrlTextView.textContainerInset = .zero
|
|
requestUrlTextView.isSelectable = true
|
|
|
|
leftAlignLine.textAlignment = .center
|
|
leftAlignLine.textColor = .white
|
|
leftAlignLine.adjustsFontSizeToFitWidth = true
|
|
if #available(iOS 8.2, *) {
|
|
leftAlignLine.font = UIFont.systemFont(ofSize: 20, weight: .bold)
|
|
} else {
|
|
leftAlignLine.font = UIFont.boldSystemFont(ofSize: 20)
|
|
}
|
|
}
|
|
|
|
//MARK: - layoutSubviews
|
|
override func layoutSubviews() {
|
|
superview?.layoutSubviews()
|
|
|
|
leftAlignLine.text = String(index + 1)
|
|
}
|
|
}
|