Как убрать вызов WebService из UIViewController в iOS? - PullRequest
0 голосов
/ 11 апреля 2020

Я использую Моя для сетевых вызовов в Swift.

В моем ViewController я звоню в WebService и создаю модель из ответа.

import UIKit
import Moya

class LoginViewController: UIViewController {
  let provider = MoyaProvider<Api>()

  override func viewDidLoad() {
    super.viewDidLoad()
    generateAccessToken()
  }

  private func generateAccessToken() {
    provider.request(.generateAccessToken(
        mobile: phoneTextField.text!,
        countryCode: "91",
        name: "Saurabh",
        otp: "9612")
    ) { result in
        switch result {
        case .success(let response):
            let data = response.data
            let user = try? JSONDecoder().decode(User.self, from: data)
            if let authToken = user?.authToken {
                AuthManager.setToken(token: authToken)
            }
        case .failure(let error):
            print(error.response?.statusCode as Any)
        }
    }
  }

Я хочу переместить вызов WebService в другой файл, скажем NetworkManager.swift

import Foundation
import Moya

struct NetworkManager {
  public static let shared = NetworkManager()
  private let provider = MoyaProvider<Api>()

  func generateAccessToken(with mobile: String, countryCode: String, name: String, otp: String)  {
    // Get result and return to calling class
  }
}

Но настоятельно рекомендуется не использовать Singleton Class.

Как мне вызвать мой WebService и вернуть ответ на LoginViewController?

...