0001 http://alamofire.org/)
0023 import Foundation
0024
0025
0030 public enum Method| Alamofire.swift:87 | method: Method, |
| Alamofire.swift:119 | method: Method, |
| Alamofire.swift:163 | method: Method, |
| Alamofire.swift:197 | method: Method, |
| Alamofire.swift:231 | method: Method, |
| Alamofire.swift:266 | method: Method, |
| Alamofire.swift:323 | method: Method, |
| Download.swift:80 | method: Method, |
| Manager.swift:181 | method: Method, |
| ParameterEncoding.swift:102 | func encodesParametersInURL(method: Method) -> Bool { |
| ParameterEncoding.swift:118 | if let method = Method(rawValue: mutableURLRequest.HTTPMethod) where encodesParametersInURL(method) { |
| Upload.swift:99 | method: Method, |
| Upload.swift:138 | method: Method, |
| Upload.swift:178 | method: Method, |
| Upload.swift:235 | method: Method, |
: String {
0031 case OPTIONS, GET| ParameterEncoding.swift:111 | case .GET, .HEAD, .DELETE: |
, HEAD| ParameterEncoding.swift:111 | case .GET, .HEAD, .DELETE: |
, POST, PUT, PATCH, DELETE| ParameterEncoding.swift:111 | case .GET, .HEAD, .DELETE: |
, TRACE, CONNECT
0032 }
0033
0034
0036
0062 public enum ParameterEncoding| Alamofire.swift:122 | encoding: ParameterEncoding = .URL, |
| Alamofire.swift:326 | encoding: ParameterEncoding = .URL, |
| Download.swift:83 | encoding: ParameterEncoding = .URL, |
| Manager.swift:184 | encoding: ParameterEncoding = .URL, |
{
0063 case URL| Alamofire.swift:122 | encoding: ParameterEncoding = .URL, |
| Alamofire.swift:326 | encoding: ParameterEncoding = .URL, |
| Download.swift:83 | encoding: ParameterEncoding = .URL, |
| Manager.swift:184 | encoding: ParameterEncoding = .URL, |
| ParameterEncoding.swift:90 | case .URL, .URLEncodedInURL: |
0064 case URLEncodedInURL| ParameterEncoding.swift:90 | case .URL, .URLEncodedInURL: |
| ParameterEncoding.swift:104 | case .URLEncodedInURL: |
0065 case JSON| ParameterEncoding.swift:140 | case .JSON: |
0066 case PropertyList| ParameterEncoding.swift:150 | case .PropertyList(let format, let options): |
(NSPropertyListFormat, NSPropertyListWriteOptions)
0067 case Custom| ParameterEncoding.swift:162 | case .Custom(let closure): |
((URLRequestConvertible, [String: AnyObject]?) -> (NSMutableURLRequest, NSError?))
0068
0069 parameterparameterreturns
0078 public func encode| Download.swift:89 | let encodedURLRequest = encoding.encode(mutableURLRequest, parameters: parameters).0 |
| Manager.swift:189 | let encodedURLRequest = encoding.encode(mutableURLRequest, parameters: parameters).0 |
(
0079 URLRequest: URLRequestConvertible,
0080 parameters: [String: AnyObject]?)
0081 -> (NSMutableURLRequest, NSError?)
0082 {
0083 var mutableURLRequest = URLRequest.URLRequest
0084
0085 guard let parameters = parameters else { return (mutableURLRequest, nil) }
0086
0087 var encodingError: NSError? = nil
0088
0089 switch self {
0090 case .URL, .URLEncodedInURL:
0091 func query(parameters: [String: AnyObject]) -> String {
0092 var components: [(String, String)] = []
0093
0094 for key in parameters.keys.sort(<) {
0095 let value = parameters[key]!
0096 components += queryComponents(key, value)
0097 }
0098
0099 return (components.map { "\($0)=\($1)" } as [String]).joinWithSeparator("&")
0100 }
0101
0102 func encodesParametersInURL(method: Method) -> Bool {
0103 switch self {
0104 case .URLEncodedInURL:
0105 return true
0106 default:
0107 break
0108 }
0109
0110 switch method {
0111 case .GET, .HEAD, .DELETE:
0112 return true
0113 default:
0114 return false
0115 }
0116 }
0117
0118 if let method = Method(rawValue: mutableURLRequest.HTTPMethod) where encodesParametersInURL(method) {
0119 if let
0120 URLComponents = NSURLComponents(URL: mutableURLRequest.URL!, resolvingAgainstBaseURL: false)
0121 where !parameters.isEmpty
0122 {
0123 let percentEncodedQuery = (URLComponents.percentEncodedQuery.map { $0 + "&" } ?? "") + query(parameters)
0124 URLComponents.percentEncodedQuery = percentEncodedQuery
0125 mutableURLRequest.URL = URLComponents.URL
0126 }
0127 } else {
0128 if mutableURLRequest.valueForHTTPHeaderField("Content-Type") == nil {
0129 mutableURLRequest.setValue(
0130 "application/x-www-form-urlencoded; charset=utf-8",
0131 forHTTPHeaderField: "Content-Type"
0132 )
0133 }
0134
0135 mutableURLRequest.HTTPBody = query(parameters).dataUsingEncoding(
0136 NSUTF8StringEncoding,
0137 allowLossyConversion: false
0138 )
0139 }
0140 case .JSON:
0141 do {
0142 let options = NSJSONWritingOptions()
0143 let data = try NSJSONSerialization.dataWithJSONObject(parameters, options: options)
0144
0145 mutableURLRequest.setValue("application/json", forHTTPHeaderField: "Content-Type")
0146 mutableURLRequest.HTTPBody = data
0147 } catch {
0148 encodingError = error as NSError
0149 }
0150 case .PropertyList(let format, let options):
0151 do {
0152 let data = try NSPropertyListSerialization.dataWithPropertyList(
0153 parameters,
0154 format: format,
0155 options: options
0156 )
0157 mutableURLRequest.setValue("application/x-plist", forHTTPHeaderField: "Content-Type")
0158 mutableURLRequest.HTTPBody = data
0159 } catch {
0160 encodingError = error as NSError
0161 }
0162 case .Custom(let closure):
0163 (mutableURLRequest, encodingError) = closure(mutableURLRequest, parameters)
0164 }
0165
0166 return (mutableURLRequest, encodingError)
0167 }
0168
0169 parameterparameterreturns
0177 public func queryComponents| ParameterEncoding.swift:96 | components += queryComponents(key, value) |
| ParameterEncoding.swift:182 | components += queryComponents("\(key)[\(nestedKey)]", value) |
| ParameterEncoding.swift:186 | components += queryComponents("\(key)[]", value) |
(key: String, _ value: AnyObject) -> [(String, String)] {
0178 var components: [(String, String)] = []
0179
0180 if let dictionary = value as? [String: AnyObject] {
0181 for (nestedKey, value) in dictionary {
0182 components += queryComponents("\(key)[\(nestedKey)]", value)
0183 }
0184 } else if let array = value as? [AnyObject] {
0185 for value in array {
0186 components += queryComponents("\(key)[]", value)
0187 }
0188 } else {
0189 components.append((escape(key), escape("\(value)")))
0190 }
0191
0192 return components
0193 }
0194
0195 parameterreturns
0211 public func escape| ParameterEncoding.swift:189 | components.append((escape(key), escape("\(value)"))) |
| ParameterEncoding.swift:189 | components.append((escape(key), escape("\(value)"))) |
(string: String) -> String {
0212 let generalDelimitersToEncode = ":#[]@" let subDelimitersToEncode = "!$&'()*+,;="
0214
0215 let allowedCharacterSet = NSCharacterSet.URLQueryAllowedCharacterSet().mutableCopy() as! NSMutableCharacterSet
0216 allowedCharacterSet.removeCharactersInString(generalDelimitersToEncode + subDelimitersToEncode)
0217
0218 var escaped = ""
0219
0220 https://github.com/Alamofire/Alamofire/issues/206
0231 if #available(iOS 8.3, OSX 10.10, *) {
0232 escaped = string.stringByAddingPercentEncodingWithAllowedCharacters(allowedCharacterSet) ?? string
0233 } else {
0234 let batchSize = 50
0235 var index = string.startIndex
0236
0237 while index != string.endIndex {
0238 let startIndex = index
0239 let endIndex = index.advancedBy(batchSize, limit: string.endIndex)
0240 let range = Range(start: startIndex, end: endIndex)
0241
0242 let substring = string.substringWithRange(range)
0243
0244 escaped += substring.stringByAddingPercentEncodingWithAllowedCharacters(allowedCharacterSet) ?? substring
0245
0246 index = endIndex
0247 }
0248 }
0249
0250 return escaped
0251 }
0252 }
0253