38 lines
1.1 KiB
Swift
Executable File
38 lines
1.1 KiB
Swift
Executable File
//
|
|
// Extensions.swift
|
|
// Arxius
|
|
//
|
|
// Created by Jordan Koch on 9/16/18.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
extension Dictionary {
|
|
func percentEscaped() -> String {
|
|
return map { (key, value) in
|
|
let escapedKey = "\(key)".addingPercentEncoding(withAllowedCharacters: .urlQueryValueAllowed) ?? ""
|
|
let escapedValue = "\(value)".addingPercentEncoding(withAllowedCharacters: .urlQueryValueAllowed) ?? ""
|
|
return escapedKey + "=" + escapedValue
|
|
}
|
|
.joined(separator: "&")
|
|
}
|
|
}
|
|
|
|
extension CharacterSet {
|
|
static let urlQueryValueAllowed: CharacterSet = {
|
|
let generalDelimitersToEncode = ":#[]@" // does not include "?" or "/" due to RFC 3986 - Section 3.4
|
|
let subDelimitersToEncode = "!$&'()*+,;="
|
|
|
|
var allowed = CharacterSet.urlQueryAllowed
|
|
allowed.remove(charactersIn: "\(generalDelimitersToEncode)\(subDelimitersToEncode)")
|
|
return allowed
|
|
}()
|
|
}
|
|
|
|
extension NSMutableData {
|
|
func appendString(_ string: String) {
|
|
let data = string.data(using: String.Encoding.utf8, allowLossyConversion: false)
|
|
append(data!)
|
|
}
|
|
}
|