initial commit
This commit is contained in:
commit
8de962eeb8
44 changed files with 4843 additions and 0 deletions
104
MCMSEndpoint.swift
Normal file
104
MCMSEndpoint.swift
Normal file
|
|
@ -0,0 +1,104 @@
|
|||
import Foundation
|
||||
|
||||
/// Builds versioned endpoint paths (without host). The leading version segment
|
||||
/// is applied here so call sites read like the REST docs.
|
||||
///
|
||||
/// Reconcile exact paths with `openapi.json`; these mirror the MCMS 6.0
|
||||
/// REST API Developer Guide.
|
||||
enum MCMSEndpoint {
|
||||
// Auth / session / system
|
||||
case authenticate
|
||||
case logout
|
||||
case databaseSelection
|
||||
case databaseStatus
|
||||
case version
|
||||
|
||||
// PON Controllers
|
||||
case controllerConfigs
|
||||
case controllerConfig(id: String)
|
||||
case controllerStates // CNTL-STATE list
|
||||
case controllerStats(id: String)
|
||||
case controllerLogs(id: String)
|
||||
|
||||
// OLTs
|
||||
case oltConfigs
|
||||
case oltConfig(id: String)
|
||||
case oltStates // OLT-STATE list (carries ONU registration buckets)
|
||||
case oltState(id: String)
|
||||
case oltStats(id: String)
|
||||
case oltLogs(id: String)
|
||||
case oltDisableONU(olt: String, onu: String)
|
||||
case oltBroadcastEnableONUs(olt: String)
|
||||
case oltReset(id: String)
|
||||
|
||||
// ONUs
|
||||
case onuConfigs
|
||||
case onuConfig(id: String)
|
||||
case onuStates
|
||||
case onuState(id: String)
|
||||
case onuStats(id: String)
|
||||
case onuLogs(id: String)
|
||||
case onuAlarmHistories
|
||||
case onuAlarmHistory(id: String)
|
||||
case onuAlarmConfigs
|
||||
case onuAlarmConfig(id: String)
|
||||
case onuCPEStates
|
||||
case onuAutomationConfigs
|
||||
case onuAutomationConfig(id: String)
|
||||
case onuReset(id: String)
|
||||
case onuFirmwareFiles // GET /files/onu-firmware/
|
||||
case onuCPE(id: String) // web helper /cpe/onu/<id>/ (no version segment)
|
||||
|
||||
/// Path relative to `baseURL`, including the version segment.
|
||||
func path(version: String) -> String {
|
||||
let v = "/\(version)"
|
||||
switch self {
|
||||
case .authenticate: return "\(v)/users/authenticate/"
|
||||
case .logout: return "\(v)/users/logout/"
|
||||
case .databaseSelection: return "\(v)/databases/selection/"
|
||||
case .databaseStatus: return "\(v)/databases/status/"
|
||||
case .version: return "\(v)/ponmgr/version/"
|
||||
|
||||
case .controllerConfigs: return "\(v)/controllers/configs/"
|
||||
case .controllerConfig(let id): return "\(v)/controllers/configs/\(enc(id))/"
|
||||
case .controllerStates: return "\(v)/controllers/states/"
|
||||
case .controllerStats(let id): return "\(v)/controllers/stats/\(enc(id))/"
|
||||
case .controllerLogs(let id): return "\(v)/controllers/logs/\(enc(id))/"
|
||||
|
||||
case .oltConfigs: return "\(v)/olts/configs/"
|
||||
case .oltConfig(let id): return "\(v)/olts/configs/\(enc(id))/"
|
||||
case .oltStates: return "\(v)/olts/states/"
|
||||
case .oltState(let id): return "\(v)/olts/states/\(enc(id))/"
|
||||
case .oltStats(let id): return "\(v)/olts/stats/\(enc(id))/"
|
||||
case .oltLogs(let id): return "\(v)/olts/logs/\(enc(id))/"
|
||||
case .oltDisableONU(let olt, let onu):
|
||||
return "\(v)/olts/\(enc(olt))/disable-onu/\(enc(onu))/"
|
||||
case .oltBroadcastEnableONUs(let olt):
|
||||
return "\(v)/olts/\(enc(olt))/broadcast-enable-onus/"
|
||||
case .oltReset(let id): return "\(v)/olts/\(enc(id))/reset/"
|
||||
|
||||
case .onuConfigs: return "\(v)/onus/configs/"
|
||||
case .onuConfig(let id): return "\(v)/onus/configs/\(enc(id))/"
|
||||
case .onuStates: return "\(v)/onus/states/"
|
||||
case .onuState(let id): return "\(v)/onus/states/\(enc(id))/"
|
||||
case .onuStats(let id): return "\(v)/onus/stats/\(enc(id))/"
|
||||
case .onuLogs(let id): return "\(v)/onus/logs/\(enc(id))/"
|
||||
case .onuAlarmHistories: return "\(v)/onus/alarm-histories/"
|
||||
case .onuAlarmHistory(let id): return "\(v)/onus/alarm-histories/\(enc(id))/"
|
||||
case .onuAlarmConfigs: return "\(v)/onus/alarm-configs/"
|
||||
case .onuAlarmConfig(let id): return "\(v)/onus/alarm-configs/\(enc(id))/"
|
||||
case .onuCPEStates: return "\(v)/onus/cpe-states/"
|
||||
case .onuAutomationConfigs: return "\(v)/onus/automation/configs/"
|
||||
case .onuAutomationConfig(let id): return "\(v)/onus/automation/configs/\(enc(id))/"
|
||||
case .onuReset(let id): return "\(v)/onus/\(enc(id))/reset/"
|
||||
case .onuFirmwareFiles: return "\(v)/files/onu-firmware/"
|
||||
case .onuCPE(let id): return "/cpe/onu/\(enc(id))/" // versionless web helper
|
||||
}
|
||||
}
|
||||
|
||||
/// IDs (serials / MAC addresses) are kept RAW here — the full path is
|
||||
/// percent-encoded exactly once by `URLComponents.path` in `APIClient`.
|
||||
/// Pre-encoding double-encoded MAC colons (`:` → `%3A` → `%253A`), which MCMS
|
||||
/// rejected as an invalid id.
|
||||
private func enc(_ s: String) -> String { s }
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue