· 9 years ago · Sep 09, 2016, 01:32 PM
1enum Router: URLRequestConvertible {
2static let baseURLString = "http://example.com"
3static var OAuthToken: String?
4
5case CreateUser([String: AnyObject])
6case ReadUser(String)
7case UpdateUser(String, [String: AnyObject])
8case DestroyUser(String)
9
10var method: Alamofire.Method {
11 switch self {
12 case .CreateUser:
13 return .POST
14 case .ReadUser:
15 return .GET
16 case .UpdateUser:
17 return .PUT
18 case .DestroyUser:
19 return .DELETE
20 }
21}
22
23var path: String {
24 switch self {
25 case .CreateUser:
26 return "/users"
27 case .ReadUser(let username):
28 return "/users/(username)"
29 case .UpdateUser(let username, _):
30 return "/users/(username)"
31 case .DestroyUser(let username):
32 return "/users/(username)"
33 }
34}
35
36// MARK: URLRequestConvertible
37
38var URLRequest: NSMutableURLRequest {
39 let URL = NSURL(string: Router.baseURLString)!
40 let mutableURLRequest = NSMutableURLRequest(URL: URL.URLByAppendingPathComponent(path))
41 mutableURLRequest.HTTPMethod = method.rawValue
42
43 if let token = Router.OAuthToken {
44 mutableURLRequest.setValue("Bearer (token)", forHTTPHeaderField: "Authorization")
45 }
46
47 switch self {
48 case .CreateUser(let parameters):
49 return Alamofire.ParameterEncoding.JSON.encode(mutableURLRequest, parameters: parameters).0
50 case .UpdateUser(_, let parameters):
51 return Alamofire.ParameterEncoding.URL.encode(mutableURLRequest, parameters: parameters).0
52 default:
53 return mutableURLRequest
54 }
55}
56}