Skip to content

Commit

Permalink
Update public interface
Browse files Browse the repository at this point in the history
  • Loading branch information
nauaros committed Feb 26, 2025
1 parent e256774 commit 5fb569c
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 29 deletions.
8 changes: 4 additions & 4 deletions Adyen.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -529,7 +529,7 @@
C982FFD826946F0800AED849 /* AffirmComponent.swift in Sources */ = {isa = PBXBuildFile; fileRef = C982FFD726946F0800AED849 /* AffirmComponent.swift */; };
C982FFDC2694792F00AED849 /* AffirmPaymentMethod.swift in Sources */ = {isa = PBXBuildFile; fileRef = C982FFDB2694792F00AED849 /* AffirmPaymentMethod.swift */; };
C98FF6672C5A793A00B0050D /* StoredTwintPaymentMethod.swift in Sources */ = {isa = PBXBuildFile; fileRef = C98FF6662C5A793A00B0050D /* StoredTwintPaymentMethod.swift */; };
C99AA1422D6DF6480043AA96 /* AdyenCardScannerSDK.swift in Sources */ = {isa = PBXBuildFile; fileRef = C99AA1412D6DF6480043AA96 /* AdyenCardScannerSDK.swift */; };
C99AA1422D6DF6480043AA96 /* CardScanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = C99AA1412D6DF6480043AA96 /* CardScanner.swift */; };
C99FF2BB2D50E872007179C5 /* CardScannerError.swift in Sources */ = {isa = PBXBuildFile; fileRef = C99FF2B22D50E872007179C5 /* CardScannerError.swift */; };
C99FF2BC2D50E872007179C5 /* CreditCard.swift in Sources */ = {isa = PBXBuildFile; fileRef = C99FF2B32D50E872007179C5 /* CreditCard.swift */; };
C99FF2BD2D50E872007179C5 /* CardImageParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = C99FF2B52D50E872007179C5 /* CardImageParser.swift */; };
Expand Down Expand Up @@ -1883,7 +1883,7 @@
C982FFD726946F0800AED849 /* AffirmComponent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AffirmComponent.swift; sourceTree = "<group>"; };
C982FFDB2694792F00AED849 /* AffirmPaymentMethod.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AffirmPaymentMethod.swift; sourceTree = "<group>"; };
C98FF6662C5A793A00B0050D /* StoredTwintPaymentMethod.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoredTwintPaymentMethod.swift; sourceTree = "<group>"; };
C99AA1412D6DF6480043AA96 /* AdyenCardScannerSDK.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdyenCardScannerSDK.swift; sourceTree = "<group>"; };
C99AA1412D6DF6480043AA96 /* CardScanner.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CardScanner.swift; sourceTree = "<group>"; };
C99FF2B22D50E872007179C5 /* CardScannerError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CardScannerError.swift; sourceTree = "<group>"; };
C99FF2B32D50E872007179C5 /* CreditCard.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CreditCard.swift; sourceTree = "<group>"; };
C99FF2B52D50E872007179C5 /* CardImageParser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CardImageParser.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -3594,7 +3594,7 @@
C99FF2B62D50E872007179C5 /* Sources */ = {
isa = PBXGroup;
children = (
C99AA1412D6DF6480043AA96 /* AdyenCardScannerSDK.swift */,
C99AA1412D6DF6480043AA96 /* CardScanner.swift */,
C94639CF2D5F68BC004A1B0C /* CaptureSessionManager.swift */,
C99FF2B52D50E872007179C5 /* CardImageParser.swift */,
C9680BE52D6CAD590076B93D /* CardScannerAssembler.swift */,
Expand Down Expand Up @@ -6973,7 +6973,7 @@
C94639D02D5F68BC004A1B0C /* CaptureSessionManager.swift in Sources */,
C92B807C2D5B69CF0020A099 /* AVCaptureVideoOrientation+Extensions.swift in Sources */,
C99FF2BD2D50E872007179C5 /* CardImageParser.swift in Sources */,
C99AA1422D6DF6480043AA96 /* AdyenCardScannerSDK.swift in Sources */,
C99AA1422D6DF6480043AA96 /* CardScanner.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down
19 changes: 0 additions & 19 deletions AdyenCardScanner/Sources/AdyenCardScannerSDK.swift

This file was deleted.

36 changes: 36 additions & 0 deletions AdyenCardScanner/Sources/CardScanner.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
//
// Copyright (c) 2025 Adyen N.V.
//
// This file is open source and available under the MIT license. See the LICENSE file for more info.
//

import Foundation
import UIKit

protocol CardScanning {
static func createCardScanner(
completion: @escaping (Result<CreditCard, CardScannerError>) -> Void
) -> UIViewController?

static var isAvailable: Bool { get }
}

public enum CardScanner: CardScanning {

// MARK: - Properties

private static let cardScannerAssembler = CardScannerAssembler()

// MARK: - CardScanning

public static func createCardScanner(
completion: @escaping (Result<CreditCard, CardScannerError>) -> Void
) -> UIViewController? {
let cardScannerViewController = cardScannerAssembler.resolveCardScannerViewController(completion: completion)
return cardScannerViewController
}

public static var isAvailable: Bool {
cardScannerAssembler.captureDevice != nil
}
}
18 changes: 12 additions & 6 deletions AdyenCardScanner/Sources/CardScannerAssembler.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,23 +11,29 @@ import UIKit
protocol CardScannerAssembling {
func resolveCardScannerViewController(
completion: @escaping (Result<CreditCard, CardScannerError>) -> Void
) throws -> UIViewController
) -> UIViewController?
}

class CardScannerAssembler: CardScannerAssembling {

// MARK: - Initializers

init() { /* Empty initializer */ }
let captureDevice: AVCaptureDevice?

init() {
self.captureDevice = AVCaptureDevice.default(
.builtInWideAngleCamera,
for: .video,
position: .back
)
}

// MARK: - CardScannerAssemblerProtocol

func resolveCardScannerViewController(
completion: @escaping (Result<CreditCard, CardScannerError>) -> Void
) throws -> UIViewController {
guard let captureDevice = AVCaptureDevice.default(.builtInWideAngleCamera, for: .video, position: .back) else {
throw CardScannerError(kind: .cameraSetup)
}
) -> UIViewController? {
guard let captureDevice else { return nil }

let expireDateFormatter = ExpirationDateFormatter()
let cardImageParser = CardImageParser(expirationDateFormatter: expireDateFormatter)
Expand Down

0 comments on commit 5fb569c

Please sign in to comment.