in sdk/core/azure-core-http/src/main/java/com/azure/android/core/http/policy/CookiePolicy.java [34:84]
public void process(HttpPipelinePolicyChain chain) {
HttpRequest httpRequest = chain.getRequest();
final URI uri;
try {
uri = httpRequest.getUrl().toURI();
} catch (URISyntaxException error) {
chain.completedError(error);
return;
}
Map<String, List<String>> cookieHeaders = new HashMap<>();
for (HttpHeader header : httpRequest.getHeaders()) {
cookieHeaders.put(header.getName(), Arrays.asList(chain.getRequest().getHeaders()
.getValues(header.getName())));
}
final Map<String, List<String>> requestCookies;
try {
requestCookies = cookies.get(uri, cookieHeaders);
} catch (IOException error) {
chain.completedError(error);
return;
}
for (Map.Entry<String, List<String>> entry : requestCookies.entrySet()) {
httpRequest.getHeaders().put(entry.getKey(), TextUtils.join(",", entry.getValue()));
}
chain.processNextPolicy(httpRequest, new NextPolicyCallback() {
@Override
public PolicyCompleter.CompletionState onSuccess(HttpResponse response, PolicyCompleter completer) {
Map<String, List<String>> responseHeaders = new HashMap<>();
for (HttpHeader header : response.getHeaders()) {
responseHeaders.put(header.getName(), Collections.singletonList(header.getValue()));
}
try {
cookies.put(uri, responseHeaders);
} catch (IOException error) {
return completer.completedError(error);
}
return completer.completed(response);
}
@Override
public PolicyCompleter.CompletionState onError(Throwable error, PolicyCompleter completer) {
return completer.completedError(error);
}
});
}