@@ -47,16 +47,21 @@ public class API {
47
47
48
48
static private func makeURL( endpoint: Endpoint ,
49
49
basicAuthUser: String ? ,
50
+ forceSignedOutURL: Bool ,
50
51
isJSONAPI: Bool ) -> URL {
51
52
var url : URL
52
53
if let user = basicAuthUser {
53
54
url = URL ( string: " \( Self . URL_PREFIX) \( user) :@www. \( Self . HOST) " ) !
54
55
} else {
55
- switch OauthClient . shared. authState {
56
- case . authenthicated:
57
- url = URL ( string: " \( Self . URL_PREFIX) \( Self . HOST_AUTH_DOMAIN) . \( Self . HOST) " ) !
58
- default :
56
+ if forceSignedOutURL {
59
57
url = URL ( string: " \( Self . URL_PREFIX) www. \( Self . HOST) " ) !
58
+ } else {
59
+ switch OauthClient . shared. authState {
60
+ case . authenthicated:
61
+ url = URL ( string: " \( Self . URL_PREFIX) \( Self . HOST_AUTH_DOMAIN) . \( Self . HOST) " ) !
62
+ default :
63
+ url = URL ( string: " \( Self . URL_PREFIX) www. \( Self . HOST) " ) !
64
+ }
60
65
}
61
66
}
62
67
url = url. appendingPathComponent ( endpoint. path ( ) )
@@ -98,17 +103,24 @@ public class API {
98
103
99
104
public func request< T: Decodable > ( endpoint: Endpoint ,
100
105
basicAuthUser: String ? = nil ,
106
+ forceSignedOutURL: Bool = false ,
101
107
httpMethod: String = " GET " ,
102
108
isJSONEndpoint: Bool = true ,
103
109
queryParamsAsBody: Bool = false ,
104
110
params: [ String : String ] ? = nil ) -> AnyPublisher < T , NetworkError > {
105
111
106
112
if basicAuthUser != nil || authenticatedSession != nil ||
107
113
OauthClient . shared. authState == . signedOut || OauthClient . shared. authState == . signinInProgress {
108
- let url = Self . makeURL ( endpoint: endpoint, basicAuthUser: basicAuthUser, isJSONAPI: isJSONEndpoint)
109
- let request = Self . makeRequest ( url: url, httpMethod: httpMethod, queryParamsAsBody: queryParamsAsBody, params: params)
114
+ let url = Self . makeURL ( endpoint: endpoint,
115
+ basicAuthUser: basicAuthUser,
116
+ forceSignedOutURL: forceSignedOutURL,
117
+ isJSONAPI: isJSONEndpoint)
118
+ let request = Self . makeRequest ( url: url,
119
+ httpMethod: httpMethod,
120
+ queryParamsAsBody: queryParamsAsBody,
121
+ params: params)
110
122
111
- if let session = authenticatedSession {
123
+ if let session = authenticatedSession, !forceSignedOutURL {
112
124
return executeRequest ( publisher: session. dataTaskPublisher ( for: request) )
113
125
} else {
114
126
return executeRequest ( publisher: signedOutSession. dataTaskPublisher ( for: request) )
@@ -119,6 +131,7 @@ public class API {
119
131
. map {
120
132
$0. dataTaskPublisher ( for: Self . makeRequest ( url: Self . makeURL ( endpoint: endpoint,
121
133
basicAuthUser: basicAuthUser,
134
+ forceSignedOutURL: forceSignedOutURL,
122
135
isJSONAPI: isJSONEndpoint) ,
123
136
httpMethod: httpMethod,
124
137
queryParamsAsBody: queryParamsAsBody,
0 commit comments