Skip to content

Instantly share code, notes, and snippets.

@PauloLeon
Created February 8, 2018 12:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save PauloLeon/8975ec3d7797fdcb476890e9b50df41c to your computer and use it in GitHub Desktop.
Save PauloLeon/8975ec3d7797fdcb476890e9b50df41c to your computer and use it in GitHub Desktop.
//
// 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