Files

63 lines
2.0 KiB
Swift
Raw Permalink Normal View History

//
// NSURLAdditions.swift
// ArchillectTV
//
// Created by Charles Magahern on 10/25/15.
//
import Foundation
2017-05-13 00:40:03 -07:00
extension URL
2016-07-24 00:14:04 -07:00
{
var requestParameters: [String : String]?
{
get
{
2017-05-13 00:40:03 -07:00
let urlComponents = self.absoluteString.components(separatedBy: "/")
let paramsString = urlComponents[urlComponents.count - 1]
2017-05-13 00:40:03 -07:00
let parameterComponents = paramsString.components(separatedBy: CharacterSet(charactersIn: "&?"))
var dict: Dictionary<String, String> = Dictionary()
for paramPair in parameterComponents {
2017-05-13 00:40:03 -07:00
let kvPair = paramPair.components(separatedBy: "=")
2017-12-09 17:21:39 -08:00
if (kvPair.count == 2 && kvPair[0].count > 0) {
2017-05-13 00:40:03 -07:00
let key = kvPair[0].removingPercentEncoding!
let value = kvPair[1].removingPercentEncoding!
dict[key] = value
}
}
return dict
}
}
2017-05-13 00:40:03 -07:00
func URLByAppendingRequestParameters(_ params: [String : String]) -> URL?
{
var paramsString = ""
for (key, value) in params {
var delim = ""
2017-12-09 17:21:39 -08:00
if (paramsString.count == 0) {
delim = "?"
} else {
delim = "&"
}
2017-05-13 00:40:03 -07:00
let keyParam = key.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed)
let valueParam = value.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed)
paramsString += "\(delim)\(keyParam!)=\(valueParam!)"
}
var absoluteString = self.absoluteString
absoluteString += paramsString
2017-05-13 00:40:03 -07:00
return URL(string: absoluteString)
}
public func websocket() -> URL {
guard var components = URLComponents(url: self, resolvingAgainstBaseURL: false) else { fatalError() }
components.scheme = components.scheme == "https" ? "wss" : "ws"
return components.url!
}
}