////
////  HMG_GUEST.swift
////  HMG-iOS-Wifi
////
////  Created by ZiKambrani on 23/03/1442 AH.
////  Copyright © 1442 ZiKambrani. All rights reserved.
////
//
//import UIKit
//import NetworkExtension
//import SystemConfiguration.CaptiveNetwork
//
//
//class HMG_GUEST{
//    static  let shared = HMG_GUEST()
//    private let SSID = "GUEST-POC"
//    private let USER = "1301"
//    private let PASS = "8928"
//    
//    var complete:((_ status:Bool, _ message:String) -> Void)!
//    func connect(completion:@escaping ((_ status:Bool, _ message:String) -> Void)){
//        complete = completion
//        
//        if isAlreadyConnected() {
//            hasInternet { (has) in
//                if has == true{
//                    self.complete(true, "You already connected to internet")
//                    return
//                }else{
//                    self.authenticate()
//                }
//            }
//        }else{
//            connect()
//        }
//    }
//    
//    private func connect() {
//        let hotspotConfig = NEHotspotConfiguration(ssid: SSID)
//        hotspotConfig.joinOnce = true
//        
//        NEHotspotConfigurationManager.shared.apply(hotspotConfig) {[weak self] (error) in
//            guard let self = self else { return; }
//            
//            if let error = error {
//                self.complete(false, error.localizedDescription ?? "Error connecting to HMG wifi network" )
//            }else{
//                _ = Timer.scheduledTimer(withTimeInterval: 2, repeats: false) { (timer) in
//                    self.authenticate()
//                }
//            }
//        }
//    }
//    
//    func authenticate(){
//        
//        func callLogin(){
//            
//            let parameters = "Login=Log%20In&cmd=authenticate&password=1820&user=2300"
//            let postData =  parameters.data(using: .utf8)
//            
//            var request = URLRequest(url: URL(string: "https://captiveportal-login.hmg.com/cgi-bin/login")!,timeoutInterval: 5)
//            request.addValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
//            
//            request.httpMethod = "POST"
//            request.httpBody = postData
//            
//            let task = URLSession.shared.dataTask(with: request) { data, response, error in
//                //            guard let data = data else {
//                //                self.complete(false, "Error at authentication")
//                //                return
//                //            }
//                
//                self.hasInternet { (has) in
//                    self.complete(has, has ? "Successfully connected to the internet" : "Authentication failed or you are already using your credentials on another device")
//                }
//            }
//            task.resume()
//            
//        }
//
//        self.hasInternet { (has) in
//            if has == true{
//                self.complete(true, "Your internet account is already authenticated")
//            }else{
//                callLogin()
//            }
//        }
//        
//    }
//    
//    private func isAlreadyConnected() -> Bool{
//        var currentSSID: String?
//        if let interfaces = CNCopySupportedInterfaces() as NSArray? {
//            for interface in interfaces {
//                if let interfaceInfo = CNCopyCurrentNetworkInfo(interface as! CFString) as NSDictionary? {
//                    currentSSID = interfaceInfo[kCNNetworkInfoKeySSID as String] as? String
//                    break
//                }
//            }
//        }
//        
//        print("CurrentConnectedSSID: \(currentSSID)")
//        return currentSSID == SSID
//    }
//    
//    
//    func hasInternet( completion:@escaping ((Bool)->Void)){
//        
//        let testUrl = "https://captive.apple.com"
//        var request = URLRequest(url: URL(string: testUrl)!,timeoutInterval: 5)
//        request.httpMethod = "GET"
//        let task = URLSession.shared.dataTask(with: request) { data, response, error in
//            guard let data = data else {
//                completion(false)
//                return
//            }
//            let resp = String(data: data, encoding: .utf8)!
//            if resp.contains("<TITLE>Success</TITLE>"){
//                completion(true)
//            }else{
//                completion(false)
//            }
//            
//        }
//        task.resume()
//    }
//    
//}
