o is a simple framework to output to a file, url, the console, or even register notification using UserNotifications. o can also get input from a file, url, or console.
Currently, o can be used on macOS, iOS, and watchOS.
o.console.out("Value to print: ", terminator:"") // (oTests/oTests.swift@7) [testExample()]: Value to print:
o.console.out(o.console.in()) // Type in "???"; (oTests/oTests.swift@8) [testExample()]: Optional("???")letfileContents=4letfolderPath="./TestFolder"letfilename="SomeNumber"try o.file.createDirectory(path: folderPath)
// Write the value 4, an Int, to a file named `filename` in the `folderPath` directory. Files using o.file are base64Encoded by default.
try o.file.out(fileContents, path: folderPath, filename: filename, base64Encoded:false)
// Asserts
XCTAssertEqual(try o.file.in(path: folderPath, filename: filename),4)
// Delete the File
try o.file.delete(path: folderPath, filename: filename)
// Assert deletion
XCTAssertThrowsError(try o.file.in(path: folderPath, filename: filename)asInt)structPost:Codable{letuserId:Intletid:Intlettitle:Stringletbody:String}
// GET Request
let(data, response)=tryawait o.url.get(
url:URL(string:"api/posts")!
)
// POST Request
letpost=Post(userId:1, id:1, title:"First!", body:"")let(_, response)=tryawait o.url.post(
url:URL(string:"api/posts/\(post.id)")!,
body:try?JSONEncoder().encode(post))print(response)// Request Notification Authorization o.notification.requestAuthorization()
// Set UNUserNotificationCenter.current's delegate to `o.notification.delegate`
o.notification.registerDelegate()
// Schedule a Notification
o.notification.post(
title:"Hello!",
subtitle:"o.notification",
body:"Woo Hoo!",
trigger:UNTimeIntervalNotificationTrigger(
timeInterval:3,
repeats:false))