//
//  SessionLogin.swift
//  Sailassist
//
//  Created by 三浦薫巳 on 2023/10/26.
//

import WebKit

class SessionLogin : NSObject {
    // シングルトン宣言
    static let OnlyOne = SessionLogin()

    private var serverSession = ServerSession()
    override init() {
        super.init()
    }

    private var Calling : Bool = false      // 通信中

    /**
     * ログイン
     *  - Parameters:
     *    - login: ログイン情報
     */
    func RequestLogin(_ login : ReqLogin) {
        print(debug: "calld")
        if Calling {
            return
        }
        Calling = true

        // リクエストURLの組み立て
        let url_string : String = HttpRequestType.RegisterLogin.rawValue
        guard let req_url = URL(string : url_string) else {
            Calling = false
            return
        }

        if let postdata = serverSession.toJSON(login) {
            serverSession.postJson(req_url, postdata, completion: serverResponse)
        }
        else {
            Calling = false
            return
        }
    }

    func serverResponse(result: Result<Data, APIError>) {
        print(debug: "calld")
        switch result {
        case .success(let resultData):
            let jsonstr = String(data: resultData, encoding: .utf8)!
            if jsonstr == "Completed.\n\n" {
                Calling = false
            } else {
                Calling = false
            }
        case .failure(let errorCode):
            print(errorCode)
            break
        }
    }
}
