Created
November 21, 2016 10:54
-
-
Save thiagolioy/a7d761f05475bc3490524ab5d3d2efc2 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
import Foundation | |
import Moya | |
import CryptoSwift | |
import Dollar | |
import Keys | |
fileprivate struct MarvelAPIConfig { | |
fileprivate static let keys = MarvelKeys() | |
static let privatekey = keys.marvelPrivateKey()! | |
static let apikey = keys.marvelApiKey()! | |
static let ts = Date().timeIntervalSince1970.description | |
static let hash = "\(ts)\(privatekey)\(apikey)".md5() | |
} | |
enum MarvelAPI { | |
case characters(String?) | |
case character(String) | |
} | |
extension MarvelAPI: TargetType { | |
var baseURL: URL { return URL(string: "https://gateway.marvel.com:443")! } | |
var path: String { | |
switch self { | |
case .characters: | |
return "/v1/public/characters" | |
case .character(let characterId): | |
return "/v1/public/characters/\(characterId)" | |
} | |
} | |
var method: Moya.Method { | |
switch self { | |
case .characters, .character: | |
return .get | |
} | |
} | |
func authParameters() -> [String: String] { | |
return ["apikey": MarvelAPIConfig.apikey, | |
"ts": MarvelAPIConfig.ts, | |
"hash": MarvelAPIConfig.hash] | |
} | |
var parameters: [String: Any]? { | |
switch self { | |
case .characters(let query): | |
if let query = query { | |
return $.merge(authParameters(), | |
["nameStartsWith": query]) | |
} | |
return authParameters() | |
case .character(let characterId): | |
return $.merge(authParameters(), | |
["characterId": characterId]) | |
} | |
} | |
var task: Task { | |
return .request | |
} | |
var sampleData: Data { | |
switch self { | |
default: | |
return Data() | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment