br1sk / Sonar

Apple's radar communication in Swift
MIT License
72 stars 5 forks source link
apple openradar radar swift

Sonar

An interface to create radars on Apple's bug tracker and Open Radar frictionless from swift.

Example

Login

let openRadar = Sonar(service: .openRadar(token: "abcdefg"))
openRadar.login(
    getTwoFactorCode: { _ in fatalError("OpenRadar doesn't support 2 factor" })
{ result in
    guard case let .success = result else {
        return
    }

    print("Logged in!")
}

Create radar

let radar = Radar(
    classification: .feature, product: .bugReporter, reproducibility: .always,
    title: "Add REST API to Radar", description: "Add REST API to Radar", steps: "N/A",
    expected: "Radar to have a REST API available", actual: "API not provided",
    configuration: "N/A", version: "Any", notes: "N/A", attachments: []
)

let openRadar = Sonar(service: .openRadar(token: "abcdefg"))
openRadar.create(radar: radar) { result in
    // Check to see if the request succeeded
}

Login and Create radar on the same call

let radar = Radar(
    classification: .feature, product: .bugReporter, reproducibility: .always,
    title: "Add REST API to Radar", description: "Add REST API to Radar", steps: "N/A",
    expected: "Radar to have a REST API available", actual: "API not provided",
    configuration: "N/A", version: "Any", notes: "N/A", attachments: []
)

let appleRadar = Sonar(service: .appleRadar(appleID: "a", password: "b"))
appleRadar.loginThenCreate(
    radar: radar,
    getTwoFactorCode: { closure in
        let code = // Somehow get 2 factor auth code for user
        closure(code)
    })
{ result in
    switch result {
    case .success(let value):
        print(value) // This is the radar ID!
    case .failure(let error):
        print(error)
    }
}