public void process()

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);
            }
        });
    }