Android Open Source - azure-activedirectory-library-for-android Client Metrics






From Project

Back to project page azure-activedirectory-library-for-android.

License

The source code is released under:

Apache License

If you think the Android project azure-activedirectory-library-for-android listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

// Copyright  Microsoft Open Technologies, Inc.
////  w w w.ja v  a2  s .c  om
// All Rights Reserved
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS
// OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION
// ANY IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A
// PARTICULAR PURPOSE, MERCHANTABILITY OR NON-INFRINGEMENT.
//
// See the Apache License, Version 2.0 for the specific language
// governing permissions and limitations under the License.

package com.microsoft.aad.adal;

import java.net.URL;
import java.util.HashMap;
import java.util.UUID;

class ClientMetricsEndpointType {
    public static final String TOKEN = "token";

    public static final String INSTANCE_DISCOVERY = "instance";
}

enum ClientMetrics {

    /**
     * Singleton instance.
     */
    INSTANCE;

    private static final String CLIENT_METRICS_HEADER_LAST_ERROR = "x-client-last-error";

    private static final String CLIENT_METRICS_HEADER_LAST_REQUEST = "x-client-last-request";

    private static final String CLIENT_METRICS_HEADER_LAST_RESPONSE_TIME = "x-client-last-response-time";

    private static final String CLIENT_METRICS_HEADER_LAST_ENDPOINT = "x-client-last-endpoint";

    private long mStartTimeMillis = 0;

    private String mLastError;

    private UUID mLastCorrelationId;

    private long mLastResponseTime;

    private String mLastEndpoint;

    private boolean mIsPending = false;

    private URL mQueryUrl;

    public void beginClientMetricsRecord(URL queryUrl, UUID correlationId,
            HashMap<String, String> headers) {
        if (UrlExtensions.isADFSAuthority(queryUrl)) {
            // Don't add for ADFS endpoint
            return;
        }

        if (mIsPending) {
            addClientMetricsHeadersToRequest(headers);
        }

        mStartTimeMillis = System.currentTimeMillis();
        mQueryUrl = queryUrl;
        mLastCorrelationId = correlationId;
        mLastError = "";
        mIsPending = false;
    }

    public void endClientMetricsRecord(String endpoint, UUID correlationId) {
        if (UrlExtensions.isADFSAuthority(mQueryUrl)) {
            // Don't send to ADFS endpoint
            return;
        }

        mLastEndpoint = endpoint;

        if (mStartTimeMillis != 0) {
            mLastResponseTime = System.currentTimeMillis() - mStartTimeMillis;
            mLastCorrelationId = correlationId;
        }

        mIsPending = true;
    }

    public void setLastError(String errorCode) {
        mLastError = (errorCode != null) ? errorCode.replaceAll("[\\[\\]]", "") : "";
    }

    public void setLastErrorCodes(String[] errorCodes) {
        mLastError = (errorCodes != null) ? android.text.TextUtils.join(",", errorCodes) : null;
    }

    private void addClientMetricsHeadersToRequest(HashMap<String, String> headers) {

        if (mLastError != null) {
            headers.put(CLIENT_METRICS_HEADER_LAST_ERROR, mLastError);
        }

        if (mLastCorrelationId != null) {
            headers.put(CLIENT_METRICS_HEADER_LAST_REQUEST, mLastCorrelationId.toString());
        }

        headers.put(CLIENT_METRICS_HEADER_LAST_RESPONSE_TIME, Long.toString(mLastResponseTime));
        headers.put(CLIENT_METRICS_HEADER_LAST_ENDPOINT, mLastEndpoint);
    }
}




Java Source Code List

com.microsoft.aad.adal.ADALError.java
com.microsoft.aad.adal.AuthenticationActivity.java
com.microsoft.aad.adal.AuthenticationCallback.java
com.microsoft.aad.adal.AuthenticationCancelError.java
com.microsoft.aad.adal.AuthenticationConstants.java
com.microsoft.aad.adal.AuthenticationContext.java
com.microsoft.aad.adal.AuthenticationDialog.java
com.microsoft.aad.adal.AuthenticationException.java
com.microsoft.aad.adal.AuthenticationParameters.java
com.microsoft.aad.adal.AuthenticationRequestState.java
com.microsoft.aad.adal.AuthenticationRequest.java
com.microsoft.aad.adal.AuthenticationResult.java
com.microsoft.aad.adal.AuthenticationSettings.java
com.microsoft.aad.adal.BasicWebViewClient.java
com.microsoft.aad.adal.BrokerProxy.java
com.microsoft.aad.adal.CacheKey.java
com.microsoft.aad.adal.ChallangeResponseBuilder.java
com.microsoft.aad.adal.ClientMetrics.java
com.microsoft.aad.adal.DefaultTokenCacheStore.java
com.microsoft.aad.adal.Discovery.java
com.microsoft.aad.adal.ExceptionExtensions.java
com.microsoft.aad.adal.FileTokenCacheStore.java
com.microsoft.aad.adal.HashMapExtensions.java
com.microsoft.aad.adal.HttpWebRequest.java
com.microsoft.aad.adal.HttpWebResponse.java
com.microsoft.aad.adal.IBrokerProxy.java
com.microsoft.aad.adal.IConnectionService.java
com.microsoft.aad.adal.IDeviceCertificate.java
com.microsoft.aad.adal.IDiscovery.java
com.microsoft.aad.adal.IJWSBuilder.java
com.microsoft.aad.adal.ITokenCacheStore.java
com.microsoft.aad.adal.ITokenStoreQuery.java
com.microsoft.aad.adal.IWebRequestHandler.java
com.microsoft.aad.adal.IWindowComponent.java
com.microsoft.aad.adal.IdToken.java
com.microsoft.aad.adal.JWSBuilder.java
com.microsoft.aad.adal.Logger.java
com.microsoft.aad.adal.MemoryTokenCacheStore.java
com.microsoft.aad.adal.Oauth2.java
com.microsoft.aad.adal.PRNGFixes.java
com.microsoft.aad.adal.PackageHelper.java
com.microsoft.aad.adal.PromptBehavior.java
com.microsoft.aad.adal.StorageHelper.java
com.microsoft.aad.adal.StringExtensions.java
com.microsoft.aad.adal.TokenCacheItem.java
com.microsoft.aad.adal.UrlExtensions.java
com.microsoft.aad.adal.UserInfo.java
com.microsoft.aad.adal.WebRequestHandler.java
com.microsoft.aad.adal.WebviewHelper.java
com.microsoft.aad.adal.hello.Constants.java
com.microsoft.aad.adal.hello.FragmentHolderActivity.java
com.microsoft.aad.adal.hello.LoginFragment.java
com.microsoft.aad.adal.hello.MainActivity.java
com.microsoft.aad.adal.hello.Utils.java
com.microsoft.aad.adal.package-info.java