-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathAuthEndpoint.swift
More file actions
94 lines (82 loc) · 2.26 KB
/
AuthEndpoint.swift
File metadata and controls
94 lines (82 loc) · 2.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
//
// AuthEndpoint.swift
// DataSource
//
// Created by 최정인 on 6/30/25.
//
import Domain
enum AuthEndpoint {
case login(socialLoginType: SocialLoginType, nickname: String?, token: String)
case logout
case withdraw
case reissue(refreshToken: String)
case agreements(agreements: [TermsType: Bool])
}
extension AuthEndpoint: Endpoint {
var baseURL: String {
return AppProperties.baseURL + "/api/v1/auth"
}
var path: String {
switch self {
case .login: baseURL + "/login"
case .logout: baseURL + "/logout"
case .withdraw: baseURL + "/withdrawal"
case .reissue: baseURL + "/token/reissue"
case .agreements: baseURL + "/agreements"
}
}
var method: HTTPMethod {
return .post
}
var headers: [String : String] {
var headers: [String: String] = [
"Content-Type": "application/json",
"accept": "*/*"
]
switch self {
case .login(_, _, let token):
headers["SocialAccessToken"] = token
case .reissue(let refreshToken):
headers["Refresh-Token"] = refreshToken
default:
break
}
return headers
}
var queryParameters: [String : String] {
return [:]
}
var bodyParameters: [String : Any] {
switch self {
case .login(let socialLoginType, let nickname, _):
var parameters = ["socialType": socialLoginType.rawValue]
if let nickname {
parameters["nickname"] = nickname
}
return parameters
case .agreements(let agreements):
var parameters: [String: Any] = [:]
for agreement in agreements {
parameters[agreement.key.termKey] = agreement.value
}
return parameters
default:
return [:]
}
}
var isAuthorized: Bool {
switch self {
case .login, .reissue: false
case .logout, .withdraw, .agreements: true
}
}
}
extension TermsType {
var termKey: String {
switch self {
case .service: "agreedToTermsOfService"
case .privacy: "agreedToPrivacyPolicy"
case .age: "isOverFourteen"
}
}
}