12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- import Foundation
- open class URLTransform: TransformType {
- public typealias Object = URL
- public typealias JSON = String
- private let shouldEncodeURLString: Bool
- private let allowedCharacterSet: CharacterSet
-
- public init(shouldEncodeURLString: Bool = false, allowedCharacterSet: CharacterSet = .urlQueryAllowed) {
- self.shouldEncodeURLString = shouldEncodeURLString
- self.allowedCharacterSet = allowedCharacterSet
- }
- open func transformFromJSON(_ value: Any?) -> URL? {
- guard let URLString = value as? String else { return nil }
-
- if !shouldEncodeURLString {
- return URL(string: URLString)
- }
- guard let escapedURLString = URLString.addingPercentEncoding(withAllowedCharacters: allowedCharacterSet) else {
- return nil
- }
- return URL(string: escapedURLString)
- }
- open func transformToJSON(_ value: URL?) -> String? {
- if let URL = value {
- return URL.absoluteString
- }
- return nil
- }
- }
|