2015-12-31 19:51:51 -08:00
|
|
|
//
|
|
|
|
|
// 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]?
|
|
|
|
|
{
|
2015-12-31 19:51:51 -08:00
|
|
|
get
|
|
|
|
|
{
|
2017-05-13 00:40:03 -07:00
|
|
|
let urlComponents = self.absoluteString.components(separatedBy: "/")
|
2015-12-31 19:51:51 -08:00
|
|
|
let paramsString = urlComponents[urlComponents.count - 1]
|
2017-05-13 00:40:03 -07:00
|
|
|
let parameterComponents = paramsString.components(separatedBy: CharacterSet(charactersIn: "&?"))
|
2015-12-31 19:51:51 -08:00
|
|
|
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!
|
2015-12-31 19:51:51 -08:00
|
|
|
dict[key] = value
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return dict
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2017-05-13 00:40:03 -07:00
|
|
|
func URLByAppendingRequestParameters(_ params: [String : String]) -> URL?
|
2015-12-31 19:51:51 -08:00
|
|
|
{
|
|
|
|
|
var paramsString = ""
|
|
|
|
|
|
|
|
|
|
for (key, value) in params {
|
|
|
|
|
var delim = ""
|
2017-12-09 17:21:39 -08:00
|
|
|
if (paramsString.count == 0) {
|
2015-12-31 19:51:51 -08:00
|
|
|
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)
|
2015-12-31 19:51:51 -08:00
|
|
|
paramsString += "\(delim)\(keyParam!)=\(valueParam!)"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var absoluteString = self.absoluteString
|
|
|
|
|
absoluteString += paramsString
|
|
|
|
|
|
2017-05-13 00:40:03 -07:00
|
|
|
return URL(string: absoluteString)
|
2015-12-31 19:51:51 -08:00
|
|
|
}
|
2025-06-19 01:02:51 -07:00
|
|
|
|
|
|
|
|
public func websocket() -> URL {
|
|
|
|
|
guard var components = URLComponents(url: self, resolvingAgainstBaseURL: false) else { fatalError() }
|
|
|
|
|
components.scheme = components.scheme == "https" ? "wss" : "ws"
|
|
|
|
|
return components.url!
|
|
|
|
|
}
|
2015-12-31 19:51:51 -08:00
|
|
|
}
|