81 lines
2.2 KiB
Swift
81 lines
2.2 KiB
Swift
import Foundation
|
|
|
|
struct SonarServer: Codable, Identifiable, Hashable {
|
|
var id = UUID()
|
|
var name: String
|
|
var baseURL: String
|
|
}
|
|
|
|
struct Project: Codable, Identifiable, Hashable {
|
|
var id: String { key }
|
|
let key: String
|
|
let name: String
|
|
let qualifier: String?
|
|
let visibility: String?
|
|
let lastAnalysisDate: String?
|
|
}
|
|
|
|
struct ProjectsResponse: Codable {
|
|
let components: [Project]
|
|
let paging: Paging?
|
|
}
|
|
|
|
struct Paging: Codable { let pageIndex: Int?; let pageSize: Int?; let total: Int? }
|
|
|
|
struct Measure: Codable, Hashable { let metric: String; let value: String?; let bestValue: Bool? }
|
|
struct MeasuresComponent: Codable { let key: String; let name: String; let measures: [Measure] }
|
|
struct MeasuresResponse: Codable { let component: MeasuresComponent }
|
|
|
|
struct QualityGateResponse: Codable { let projectStatus: ProjectStatus }
|
|
struct ProjectStatus: Codable { let status: String; let conditions: [GateCondition]? }
|
|
struct GateCondition: Codable, Hashable {
|
|
let status: String
|
|
let metricKey: String
|
|
let comparator: String?
|
|
let errorThreshold: String?
|
|
let actualValue: String?
|
|
}
|
|
|
|
struct Issue: Codable, Identifiable, Hashable {
|
|
var id: String { key }
|
|
let key: String
|
|
let rule: String?
|
|
let severity: String?
|
|
let component: String?
|
|
let project: String?
|
|
let line: Int?
|
|
let message: String?
|
|
let type: String?
|
|
let status: String?
|
|
let creationDate: String?
|
|
let effort: String?
|
|
}
|
|
|
|
struct IssuesResponse: Codable { let total: Int?; let p: Int?; let ps: Int?; let issues: [Issue] }
|
|
|
|
struct ServerStatusResponse: Codable { let id: String?; let version: String?; let status: String? }
|
|
|
|
struct ProjectSnapshot: Identifiable {
|
|
var id: String { project.key }
|
|
let project: Project
|
|
var measures: [String: String] = [:]
|
|
var qualityGate: String = "UNKNOWN"
|
|
}
|
|
|
|
struct TokenGenerateResponse: Codable {
|
|
let login: String?
|
|
let name: String?
|
|
let token: String
|
|
let createdAt: String?
|
|
let type: String?
|
|
}
|
|
|
|
struct CreatedProjectCredentials: Identifiable {
|
|
let id = UUID()
|
|
let projectKey: String
|
|
let projectName: String
|
|
let tokenName: String
|
|
let token: String
|
|
let serverURL: String
|
|
}
|