Skip to content

Commit

Permalink
Merge pull request #3 from tinkoff-mobile-tech/configuration
Browse files Browse the repository at this point in the history
Рефакторинг конфигурирования SDK
  • Loading branch information
ovrchk authored Jan 25, 2021
2 parents c418ed8 + 3f8e021 commit ce814ab
Show file tree
Hide file tree
Showing 17 changed files with 156 additions and 63 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
//
// Environment+EnvironmentConfiguration.swift
// TinkoffID
//
// Created by Dmitry on 20.01.2021.
//

import Foundation

extension TinkoffEnvironment: EnvironmentConfiguration {
public var apiBaseUrl: String {
switch self {
case .production:
return "https://id.tinkoff.ru"
}
}
}
34 changes: 0 additions & 34 deletions Development/Source/Extensions/TinkoffApp+Env.swift

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
//
// TinkoffApp+TargetAppConfiguration.swift
// TinkoffID
//
// Created by Dmitry on 21.12.2020.
//

import Foundation

extension TinkoffApp: TargetAppConfiguration {
public var urlScheme: String {
switch self {
case .bank:
return "tinkoffbank://"
}
}

public var authUrl: String {
switch self {
case .bank:
return "https://tinkoff.ru/partner_auth"
}
}
}
13 changes: 13 additions & 0 deletions Development/Source/Models/Public/TinkoffEnvironment.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
//
// TinkoffEnvironment.swift
// TinkoffID
//
// Created by Dmitry on 20.01.2021.
//

import Foundation

/// Окружение Тинькофф
public enum TinkoffEnvironment {
case production
}
25 changes: 19 additions & 6 deletions Development/Source/SDK/Builder/TinkoffIDBuilder.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,23 +11,36 @@ public final class TinkoffIDBuilder {

private let clientId: String
private let callbackUrl: String
private let app: TinkoffApp
private let appConfiguration: TargetAppConfiguration
private let environmentConfiguration: EnvironmentConfiguration

public convenience init(clientId: String,
callbackUrl: String,
app: TinkoffApp = .bank,
environment: TinkoffEnvironment = .production) {
self.init(clientId: clientId,
callbackUrl: callbackUrl,
appConfiguration: app,
environmentConfiguration: environment)
}

public init(clientId: String,
callbackUrl: String,
app: TinkoffApp) {
appConfiguration: TargetAppConfiguration,
environmentConfiguration: EnvironmentConfiguration) {
self.clientId = clientId
self.callbackUrl = callbackUrl
self.app = app
self.environmentConfiguration = environmentConfiguration
self.appConfiguration = appConfiguration
}

public func build() -> ITinkoffID {
let urlSchemeBuilder = URLSchemeBuilder(baseUrlString: app.authUrl)
let appLauncher = URLSchemeAppLauncher(appUrlScheme: app.urlScheme,
let urlSchemeBuilder = URLSchemeBuilder(baseUrlString: appConfiguration.authUrl)
let appLauncher = URLSchemeAppLauncher(appUrlScheme: appConfiguration.urlScheme,
builder: urlSchemeBuilder,
router: UIApplication.shared)

let requestBuilder = RequestBuilder(baseUrl: app.apiBaseUrl)
let requestBuilder = RequestBuilder(baseUrl: environmentConfiguration.apiBaseUrl)
let api = API(requestBuilder: requestBuilder,
requestProcessor: URLSession.shared,
responseDispatcher: DispatchQueue.main)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
//
// EnvironmentConfiguration.swift
// TinkoffID
//
// Created by Dmitry on 20.01.2021.
//

import Foundation

/// Описывает окружение для работы SDK
public protocol EnvironmentConfiguration {
/// Базовый URL API
var apiBaseUrl: String { get }
}
17 changes: 17 additions & 0 deletions Development/Source/SDK/Configuration/TargetAppConfiguration.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
//
// TargetAppConfiguration.swift
// TinkoffID
//
// Created by Dmitry on 20.01.2021.
//

import Foundation

/// Описывает приложение через которое выполняется авторизация
public protocol TargetAppConfiguration {
/// URL-схема, используемая для определения установлено ли заданное приложение
var urlScheme: String { get }

/// Ссылка для проведения авторизации
var authUrl: String { get }
}
1 change: 1 addition & 0 deletions Development/Source/UI/Button/TinkoffIDButton.swift
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ final class TinkoffIDButton: UIButton {
left: style.contentHorizontalPadding + style.imageRightPadding,
bottom: style.contentVerticalPadding,
right: style.contentHorizontalPadding)
setContentHuggingPriority(.required, for: .vertical)

// Appearance
layer.cornerRadius = style.cornerRadius
Expand Down
Loading

0 comments on commit ce814ab

Please sign in to comment.