//
//  AuthApi.swift
//  Mixonomer
//
//  Created by Andy Pack on 08/08/2022.
//  Copyright © 2022 Sarsoo. All rights reserved.
//

import Foundation
import Alamofire
import SwiftyJSON


public enum AuthApi {
    case token(username: String, password: String, expiry: Int)
    case register(username: String, password: String, password2: String)
}

extension AuthApi: ApiRequest {
    var domain: String {
        return ApiRequestDefaults.domain
    }
    
    var path: String {
        switch self {
            case .token:
                return "auth/token"
            case .register:
                return "auth/register"
        }
    }
    
    
    var httpMethod: HTTPMethod {
        switch self {
        case .token:
            return .post
        case .register:
            return .post
        }
    }
    
    var parameters: JSON? {
        switch self {
        case .token(let username, let password, let expiry):
            return JSON(["username": username, "password": password, "expiry": expiry])
        case .register(let username, let password, let password2):
            return JSON(["username": username, "password": password, "password_again": password2])
        }
    }
    
    var parameterType: ParameterEncoder? {
        switch self {
        case .token:
            return JSONParameterEncoder.default
        case.register:
            return JSONParameterEncoder.default
        }
    }
    
    var headers: HTTPHeaders? {
        return nil
    }
    
    var authMethod: AuthMethod? {
        return AuthMethod.none
    }
}