Server code to fetch and toggle devices
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
//
|
||||
// NSErrorAdditions.swift
|
||||
// XIONControlPanel
|
||||
//
|
||||
// Created by Charles Magahern on 12/31/15.
|
||||
// Copyright © 2015 XION. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
enum XIONErrorCode: Int {
|
||||
case Unknown
|
||||
case ConnectionError
|
||||
}
|
||||
|
||||
extension NSError {
|
||||
private static let XIONErrorDomain = "com.xionsf.controlpanel"
|
||||
|
||||
class func xionError(code: XIONErrorCode) -> NSError
|
||||
{
|
||||
return self.xionError(code, userInfo: nil)
|
||||
}
|
||||
|
||||
class func xionError(code: XIONErrorCode, underlying: NSError?) -> NSError
|
||||
{
|
||||
var userInfo: [NSObject : AnyObject]? = nil
|
||||
if (underlying != nil) {
|
||||
userInfo = [
|
||||
NSUnderlyingErrorKey : underlying!
|
||||
]
|
||||
}
|
||||
|
||||
return self.xionError(code, userInfo: userInfo)
|
||||
}
|
||||
|
||||
class func xionError(code: XIONErrorCode, userInfo: [NSObject : AnyObject]?) -> NSError
|
||||
{
|
||||
return NSError(domain: XIONErrorDomain, code: code.rawValue, userInfo: userInfo)
|
||||
}
|
||||
|
||||
var xionErrorCode: XIONErrorCode
|
||||
{
|
||||
return XIONErrorCode(rawValue: self.code)!
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
//
|
||||
// NSURLAdditions.swift
|
||||
// ArchillectTV
|
||||
//
|
||||
// Created by Charles Magahern on 10/25/15.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
extension NSURL {
|
||||
var requestParameters: [String : String]? {
|
||||
get
|
||||
{
|
||||
let urlComponents = self.absoluteString.componentsSeparatedByString("/")
|
||||
let paramsString = urlComponents[urlComponents.count - 1]
|
||||
let parameterComponents = paramsString.componentsSeparatedByCharactersInSet(NSCharacterSet(charactersInString: "&?"))
|
||||
var dict: Dictionary<String, String> = Dictionary()
|
||||
|
||||
for paramPair in parameterComponents {
|
||||
let kvPair = paramPair.componentsSeparatedByString("=")
|
||||
if (kvPair.count == 2 && kvPair[0].characters.count > 0) {
|
||||
let key = kvPair[0].stringByRemovingPercentEncoding!
|
||||
let value = kvPair[1].stringByRemovingPercentEncoding!
|
||||
dict[key] = value
|
||||
}
|
||||
}
|
||||
|
||||
return dict
|
||||
}
|
||||
}
|
||||
|
||||
func URLByAppendingRequestParameters(params: [String : String]) -> NSURL?
|
||||
{
|
||||
var paramsString = ""
|
||||
|
||||
for (key, value) in params {
|
||||
var delim = ""
|
||||
if (paramsString.characters.count == 0) {
|
||||
delim = "?"
|
||||
} else {
|
||||
delim = "&"
|
||||
}
|
||||
|
||||
let keyParam = key.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())
|
||||
let valueParam = value.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())
|
||||
paramsString += "\(delim)\(keyParam!)=\(valueParam!)"
|
||||
}
|
||||
|
||||
var absoluteString = self.absoluteString
|
||||
absoluteString += paramsString
|
||||
|
||||
return NSURL(string: absoluteString)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
//
|
||||
// StandardError.swift
|
||||
// XIONControlPanel
|
||||
//
|
||||
// Created by Charles Magahern on 12/31/15.
|
||||
// Copyright © 2015 XION. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
class StandardErrorOutputStream: OutputStreamType {
|
||||
func write(string: String) {
|
||||
let stderr = NSFileHandle.fileHandleWithStandardError()
|
||||
stderr.writeData(string.dataUsingEncoding(NSUTF8StringEncoding)!)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user