Skip to content

Instantly share code, notes, and snippets.

View feighter09's full-sized avatar

Austin Feight feighter09

View GitHub Profile
import SwiftyJSON
protocol JSONDecodable {
init?(json: JSON)
}
import SwiftyJSON
struct User {
let name: String
}
// MARK: - JSON Decodable
extension User: JSONDecodable {
init?(json: JSON)
{
import Alamofire
import SwiftyJSON
import UIKit
class ViewController: UIViewController {
convenience init() { self.init(nibName: "ViewController", bundle: nil) }
@IBOutlet weak var label: UILabel!
var networkClient: NetworkClientType = NetworkClient()
import Alamofire
import SwiftyJSON
protocol NetworkRequest {
associatedtype ResponseType
// Required
var endpoint: String { get }
var responseHandler: NSData -> ResponseType? { get }
import Alamofire
import SwiftyJSON
protocol NetworkClientType {
func makeRequest<Request: NetworkRequest>(networkRequest: Request, callback: (NSData?, ErrorType?) -> Void)
}
struct NetworkClient: NetworkClientType {
func makeRequest<Request: NetworkRequest>(networkRequest: Request, callback: (NSData?, ErrorType?) -> Void)
{
import Alamofire
protocol FetchUserType: NetworkRequest {
associatedtype ResponseType = User
func perform(username: String, callback: (User?, ErrorType?) -> Void)
}
final class FetchUser: FetchUserType {
typealias ResponseType = User
import Alamofire
class FetchUser: NetworkRequest {
typealias ResponseType = User
var endpoint: String { return "post" }
var method: Alamofire.Method { return .POST }
var params: [String : AnyObject] { return ["param": username] }
private var username = ""
import Alamofire
import SwiftyJSON
import UIKit
class ViewController: UIViewController {
convenience init() { self.init(nibName: "ViewController", bundle: nil) }
@IBOutlet weak var label: UILabel!
var fetchUser = FetchUser()
@testable import NetworkingEvolution
import SwiftyJSON
import XCTest
class ViewControllerTests: XCTestCase {
var viewController: ViewController!
override func setUp()
{
super.setUp()
@testable import NetworkingEvolution
import SwiftyJSON
import XCTest
class ViewControllerTests: XCTestCase {
var viewController: ViewController!
override func setUp()
{
super.setUp()