Skip to content

Commit 6a2344c

Browse files
committed
fix: Custom http headers and query parameters for ios (#28)
Adding support for additional query parameters in authorization request and http headers in the authentication requests This was already supported on android. Note that the headers will only be sent in authentication requests,not in the token request.
1 parent 4c525d4 commit 6a2344c

File tree

1 file changed

+17
-2
lines changed

1 file changed

+17
-2
lines changed

ios/HaapiModule/ConfigurationHelper.swift

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,15 +32,19 @@ class ConfigurationHelper {
3232
delegate: validateTlsCertificate ? nil : TrustAllCertsDelegate(),
3333
delegateQueue: nil)
3434
let boundedTokenConfiguration = BoundedTokenConfiguration()
35+
let extraRequestParameters = getStringMap(data: data, configKey: "extraRequestParameters")
36+
let extraHttpHeaders = getStringMap(data: data, configKey: "extraHttpHeaders")
3537

3638
return HaapiConfiguration(name: getStringOrDefault(data: data, configKey: "configurationName", defaultString: "HaapiModule"),
3739
clientId: try getStringOrThrow(data: data, configKey: "clientId"),
3840
baseURL: try getUrlOrThrow(data: data, configKey: "baseUri"),
3941
tokenEndpointURL: try getUrlOrThrow(data: data, configKey: "tokenEndpointUri"),
4042
authorizationEndpointURL: try getUrlOrThrow(data: data, configKey: "authorizationEndpointUri"),
4143
appRedirect: getStringOrDefault(data: data, configKey: "appRedirect", defaultString: "app:start"),
42-
httpHeadersProvider: nil,
43-
authorizationParametersProvider: { () -> OAuthAuthorizationParameters in OAuthAuthorizationParameters(scopes: scope, acrValues: acrValues) },
44+
httpHeadersProvider: { extraHttpHeaders },
45+
authorizationParametersProvider: { () -> OAuthAuthorizationParameters in OAuthAuthorizationParameters(scopes: scope,
46+
acrValues: acrValues,
47+
extraRequestParameters: extraRequestParameters) },
4448
isAutoRedirect: true,
4549
urlSession: urlSession,
4650
tokenBoundConfiguration: boundedTokenConfiguration)
@@ -68,4 +72,15 @@ class ConfigurationHelper {
6872
.split(separator: " ")
6973
.map { String($0) }
7074
}
75+
76+
private static func getStringMap(data: Dictionary<String, Any>, configKey: String) -> Dictionary<String, String> {
77+
guard let map = data[configKey] as? [String: Any] else { return [String: String]() }
78+
var stringMap = [String: String]()
79+
for (key, value) in map {
80+
if let value = value as? String {
81+
stringMap[key] = value
82+
}
83+
}
84+
return stringMap
85+
}
7186
}

0 commit comments

Comments
 (0)