Created
February 8, 2018 12:48
-
-
Save PauloLeon/8975ec3d7797fdcb476890e9b50df41c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// BaseApiClient.swift | |
// Melhor Corrida | |
// | |
// Created by Paulo Rosa on 07/08/17. | |
// Copyright © 2017 Paulo Rosa. All rights reserved. | |
// | |
//swiftlint:disable empty_enum_arguments | |
import UIKit | |
import Alamofire | |
typealias URLRequestParams = [String: Any] | |
class BaseApiClient { | |
} | |
extension BaseApiClient { | |
enum Router: URLRequestConvertible { | |
static let routeGoogle = "https://maps.googleapis.com/maps/api/" | |
static let routeResults = "http://api.melhorcorrida.com.br/api/v1/" | |
// MARK: - Routes | |
case autoComplete(data: URLRequestParams) | |
case locationFromAddress(data: URLRequestParams) | |
case directions(data: URLRequestParams) | |
case registerUser(data: URLRequestParams) | |
case results(data: URLRequestParams) | |
// MARK: - Methods | |
var method: HTTPMethod { | |
switch self { | |
case .registerUser: | |
return .post | |
default: | |
return .get | |
} | |
} | |
// MARK: - Paths | |
var path: String { | |
switch self { | |
case .autoComplete(_): return "place/autocomplete/json" | |
case .locationFromAddress(_): return "geocode/json" | |
case .directions(_): return "directions/json" | |
case .results(_): return "estimates" | |
case .registerUser(_): return "users" | |
} | |
} | |
// MARK: - Parameters | |
var parameters: URLRequestParams? { | |
var params: URLRequestParams? | |
switch self { | |
case .autoComplete(let data): params = data | |
case .locationFromAddress(let data): params = data | |
case .directions(let data): params = data | |
case .results(let data): params = data | |
case .registerUser(let data): params = data | |
} | |
return params | |
} | |
// MARK: - Paths | |
var hearders: String { | |
if path == "estimates" || path == "users"{ | |
return "103260408667b5727f0bc10dc37240b2d38579051d9924b979ea2e4fe3a31635802b3b4ff8e25d31b39066957a8c3811c9f427e0d8a4c8c0bc58916fc3ea1be6" | |
} | |
return "" | |
} | |
func asURLRequest() throws -> URLRequest { | |
let url: URL | |
if path == "estimates" || path == "users"{ | |
url = try Router.routeResults.asURL() | |
} else { | |
url = try Router.routeGoogle.asURL() | |
} | |
var urlRequest = URLRequest(url: url.appendingPathComponent(path)) | |
urlRequest.httpMethod = method.rawValue | |
if hearders != ""{ | |
urlRequest.setValue(hearders, forHTTPHeaderField: "Api-Key") | |
} | |
if let parameters = parameters { | |
urlRequest = try URLEncoding.default.encode(urlRequest, with: parameters) | |
} | |
print("*** \(urlRequest)") | |
return urlRequest | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment