Skip to main content

Posts

Showing posts from August, 2019

Swift API Manager -Alamofire-Refresh Token-With TestCases

  import Foundation import KeychainAccess enum APIError : Error { case accessTokenExpired case networkError // Add more error cases as needed } class APIManager { private let keychain = Keychain (service: "com.example.app.refreshToken" ) private let refreshTokenKey = "refreshToken" private var accessToken: String ? func callAPI < T : Codable >( urlString : String , method : String , parameters : [ String : Any ] ? , completion : @escaping ( Result < T , APIError >) -> Void ) { guard let url = URL (string: urlString) else { completion(.failure(.networkError)) return } var request = URLRequest (url: url) request.httpMethod = method // Add access token to the request headers if available if let token = accessToken { request.setValue( "Bearer \(token) " , forHTTPHeaderField: "Aut...

Move up textfield when keyboard appears on UIViewController in Swift

Move up textfield when keyboard appears on UIViewController in Swift import UIKit import Foundation import Alamofire class ViewController: UIViewController , UIScrollViewDelegate , UITextFieldDelegate {          @IBOutlet weak var scrollViewBottonConstraint: NSLayoutConstraint !     @IBOutlet weak var emailTextField: UITextField !     @IBOutlet weak var passwordTextfield: UITextField !          @IBOutlet weak var scrollView: UIScrollView !               override func viewDidLoad() {         super . viewDidLoad ()         scrollView . contentSize = view . frame . size         let tabGesture = UITapGestureRecognizer (target: self , action: #selector (didTapView(gesture:)))         view . addGestureRecognizer (tabGesture)     } ...