Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
### Configuration ###
Configuration/
*.xcconfig

### Firebase ###
GoogleService-Info*.plist
Expand Down
12 changes: 6 additions & 6 deletions Core/AppDI/AppDI.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -277,7 +277,7 @@
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_KEY_NSHumanReadableCopyright = "";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 18.4;
IPHONEOS_DEPLOYMENT_TARGET = 17.0;
LD_RUNPATH_SEARCH_PATHS = (
"@executable_path/Frameworks",
"@loader_path/Frameworks",
Expand All @@ -286,7 +286,7 @@
"@executable_path/../Frameworks",
"@loader_path/Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 15.4;
MACOSX_DEPLOYMENT_TARGET = 14.0;
MARKETING_VERSION = 1.0;
MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++";
MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu17 gnu++20";
Expand All @@ -300,7 +300,7 @@
SWIFT_INSTALL_OBJC_HEADER = NO;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2,7";
XROS_DEPLOYMENT_TARGET = 2.4;
XROS_DEPLOYMENT_TARGET = 2.0;
};
name = Debug;
};
Expand All @@ -321,7 +321,7 @@
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_KEY_NSHumanReadableCopyright = "";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 18.4;
IPHONEOS_DEPLOYMENT_TARGET = 17.0;
LD_RUNPATH_SEARCH_PATHS = (
"@executable_path/Frameworks",
"@loader_path/Frameworks",
Expand All @@ -330,7 +330,7 @@
"@executable_path/../Frameworks",
"@loader_path/Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 15.4;
MACOSX_DEPLOYMENT_TARGET = 14.0;
MARKETING_VERSION = 1.0;
MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++";
MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu17 gnu++20";
Expand All @@ -344,7 +344,7 @@
SWIFT_INSTALL_OBJC_HEADER = NO;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2,7";
XROS_DEPLOYMENT_TARGET = 2.4;
XROS_DEPLOYMENT_TARGET = 2.0;
};
name = Release;
};
Expand Down
16 changes: 16 additions & 0 deletions Core/NetworkKit/Interface/APIEndpoint.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
//
// APIEndpoint.swift
// NetworkKit
//
// Created by 이정동 on 7/7/25.
//

import Foundation

public protocol APIEndpoint {
var baseURL: URL { get }
var path: String { get }
var method: HTTPMethod { get }
var task: HTTPTask { get }
var headers: [String: String]? { get }
}
54 changes: 54 additions & 0 deletions Core/NetworkKit/Interface/APIs/AppleAuthAPI.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
//
// AppleAuthAPI.swift
// NetworkKitInterface
//
// Created by 이정동 on 7/15/25.
//

import Foundation

public enum AppleAuthAPI {
case refreshToken(code: String)
case revokeToken(token: String)
}

extension AppleAuthAPI: APIEndpoint {
public var baseURL: URL {
switch self {
case .refreshToken:
URL(string: NetworkConfig.refreshTokenBaseURL)!
case .revokeToken:
URL(string: NetworkConfig.revokeTokenBaseURL)!
}
}

public var path: String {
switch self {
case .refreshToken:
"/getRefreshToken"
case .revokeToken:
"/revokeToken"
}
}

public var method: HTTPMethod { .get }

public var task: HTTPTask {
switch self {
case .refreshToken(let code):
.requestQueryParameters(parameters: [
"code": code
])
case .revokeToken(let token):
.requestQueryParameters(parameters: [
"refresh_token": token
])
}
}

public var headers: [String : String]? {
[
"accept": "application/json"
]
}
}
18 changes: 18 additions & 0 deletions Core/NetworkKit/Interface/Config/NetworkConfig.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
//
// NetworkConfig.swift
// NetworkKitInterface
//
// Created by 이정동 on 7/16/25.
//

import Foundation

struct NetworkConfig {
private static let bundle: Bundle? = {
let identifier = "kr.co.ios.swift.apple.NetworkKitInterface"
return .init(identifier: identifier)
}()

static let refreshTokenBaseURL = bundle?.infoDictionary?["GetRefreshTokenURL"] as? String ?? ""
static let revokeTokenBaseURL = bundle?.infoDictionary?["RevokeTokenURL"] as? String ?? ""
}
12 changes: 12 additions & 0 deletions Core/NetworkKit/Interface/HTTPMethod.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
//
// HTTPMethod.swift
// NetworkKit
//
// Created by 이정동 on 7/7/25.
//

import Foundation

public enum HTTPMethod: String {
case get = "GET"
}
13 changes: 13 additions & 0 deletions Core/NetworkKit/Interface/HTTPTask.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
//
// HTTPTask.swift
// NetworkKitInterface
//
// Created by 이정동 on 7/15/25.
//

import Foundation

public enum HTTPTask {
case requestPlain
case requestQueryParameters(parameters: [String: Any])
}
15 changes: 15 additions & 0 deletions Core/NetworkKit/Interface/NetworkError.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
//
// NetworkError.swift
// NetworkKitInterface
//
// Created by 이정동 on 7/7/25.
//

import Foundation

public enum NetworkError: Error {
case invalidURL
case httpStatusError(Int)
case urlSessionError(Error)
case stringDecodingError
}
20 changes: 20 additions & 0 deletions Core/NetworkKit/Interface/NetworkProvider.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
//
// NetworkProvider.swift
// NetworkKitInterface
//
// Created by 이정동 on 7/7/25.
//

import Foundation

public protocol NetworkProvider {
func request<T: Decodable>(
endpoint: APIEndpoint,
type: T.Type
) async throws -> T

func requestString(
endpoint: APIEndpoint,
encoding: String.Encoding
) async throws -> String
}
Loading
Loading