All Downloads are FREE. Search and download functionalities are using the official Maven repository.

src.com.android.libraries.entitlement.ServiceEntitlementRequest Maven / Gradle / Ivy

Go to download

A library jar that provides APIs for Applications written for the Google Android Platform.

There is a newer version: 15-robolectric-12650502
Show newest version
/*
 * Copyright (C) 2021 The Android Open Source Project
 *
 * 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
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.libraries.entitlement;

import android.os.Build;
import android.os.Build.VERSION;

import com.google.auto.value.AutoValue;

/**
 * Service entitlement HTTP request parameters, as defiend in GSMA spec TS.43 section 2.2.
 */
@AutoValue
public abstract class ServiceEntitlementRequest {
    /** Disables notification token. */
    public static final int NOTICATION_ACTION_DISABLE = 0;
    /** Enables FCM notification token. */
    public static final int NOTICATION_ACTION_ENABLE_FCM = 2;
    /** Accepts the content type in XML format. */
    public static final String ACCEPT_CONTENT_TYPE_XML = "text/vnd.wap.connectivity-xml";
    /** Accepts the content type in JSON format. */
    public static final String ACCEPT_CONTENT_TYPE_JSON =
            "application/vnd.gsma.eap-relay.v1.0+json";
    /** Accepts the content type in JSON or XML format. */
    public static final String ACCEPT_CONTENT_TYPE_JSON_AND_XML =
            "application/vnd.gsma.eap-relay.v1.0+json, text/vnd.wap.connectivity-xml";
    /** Default value of configuration version. */
    public static final int DEFAULT_CONFIGURATION_VERSION = 0;
    /** Default value of entitlement version. */
    public static final String DEFAULT_ENTITLEMENT_VERSION = "2.0";


    /**
     * Returns the version of configuration currently stored on the client. Used by HTTP parameter
     * "vers".
     */
    public abstract int configurationVersion();

    /**
     * Returns the version of the entitlement specification. Used by HTTP parameter
     * "entitlement_version".
     */
    public abstract String entitlementVersion();

    /**
     * Returns the authentication token. Used by HTTP parameter "token".
     */
    public abstract String authenticationToken();

    /**
     * Returns the unique identifier of the device like IMEI. Used by HTTP parameter "terminal_id".
     */
    public abstract String terminalId();

    /**
     * Returns the OEM of the device. Used by HTTP parameter "terminal_vendor".
     */
    public abstract String terminalVendor();

    /**
     * Returns the model of the device. Used by HTTP parameter "terminal_model".
     */
    public abstract String terminalModel();

    /**
     * Returns the software version of the device. Used by HTTP parameter "terminal_sw_version".
     */
    public abstract String terminalSoftwareVersion();

    /**
     * Returns the name of the device application making the request. Used by HTTP parameter
     * "app_name".
     */
    public abstract String appName();

    /**
     * Returns the version of the device application making the request. Used by HTTP parameter
     * "app_version".
     */
    public abstract String appVersion();

    /**
     * Returns the FCM registration token used to register for entitlement configuration request
     * from network. Used by HTTP parameter "notif_token".
     */
    public abstract String notificationToken();

    /**
     * Returns the action associated with the FCM registration token. Used by HTTP parameter
     * "notif_action".
     *
     * @see #NOTICATION_ACTION_ENABLE_FCM
     * @see #NOTICATION_ACTION_DISABLE
     */
    public abstract int notificationAction();

    /**
     * Returns the accepted content type of http response.
     *
     * @see #ACCEPT_CONTENT_TYPE_XML
     * @see #ACCEPT_CONTENT_TYPE_JSON
     * @see #ACCEPT_CONTENT_TYPE_JSON_AND_XML
     */
    public abstract String acceptContentType();

    /**
     * Returns a new {@link Builder} object.
     */
    public static Builder builder() {
        return new AutoValue_ServiceEntitlementRequest.Builder()
                .setConfigurationVersion(DEFAULT_CONFIGURATION_VERSION)
                .setEntitlementVersion(DEFAULT_ENTITLEMENT_VERSION)
                .setAuthenticationToken("")
                .setTerminalId("")
                .setTerminalVendor(Build.MANUFACTURER)
                .setTerminalModel(Build.MODEL)
                .setTerminalSoftwareVersion(VERSION.BASE_OS)
                .setAppName("")
                .setAppVersion("")
                .setNotificationToken("")
                .setNotificationAction(NOTICATION_ACTION_ENABLE_FCM)
                .setAcceptContentType(ACCEPT_CONTENT_TYPE_JSON_AND_XML);
    }

    /**
     * Builder.
     */
    @AutoValue.Builder
    public abstract static class Builder {
        /**
         * Sets the version of configuration currently stored on the client. Used by HTTP parameter
         * "vers".
         *
         * 

If not set, default to {@link #DEFAULT_CONFIGURATION_VERSION} indicating no existing * configuration. */ public abstract Builder setConfigurationVersion(int value); /** * Sets the current version of the entitlement specification. Used by HTTP parameter * "entitlement_version". * *

If not set, default to {@link #DEFAULT_ENTITLEMENT_VERSION} base on TS.43-v5.0. */ public abstract Builder setEntitlementVersion(String value); /** * Sets the authentication token. Used by HTTP parameter "token". * *

If not set, will trigger embedded EAP-AKA authentication as decribed in TS.43 section * 2.6.1. */ public abstract Builder setAuthenticationToken(String value); /** * Sets the unique identifier of the device like IMEI. Used by HTTP parameter * "terminal_id". * *

If not set, will use the device IMEI. */ public abstract Builder setTerminalId(String value); /** * Sets the OEM of the device. Used by HTTP parameter "terminal_vendor". * *

If not set, will use {@link android.os.Build#MANUFACTURER}. */ public abstract Builder setTerminalVendor(String value); /** * Sets the model of the device. Used by HTTP parameter "terminal_model". * *

If not set, will use {@link android.os.Build#MODEL}. */ public abstract Builder setTerminalModel(String value); /** * Sets the software version of the device. Used by HTTP parameter "terminal_sw_version". * *

If not set, will use {@link android.os.Build.VERSION#BASE_OS}. */ public abstract Builder setTerminalSoftwareVersion(String value); /** * Sets the name of the device application making the request. Used by HTTP parameter * "app_name". * *

Optional. */ public abstract Builder setAppName(String value); /** * Sets the version of the device application making the request. Used by HTTP parameter * "app_version". * *

Optional. */ public abstract Builder setAppVersion(String value); /** * Sets the FCM registration token used to register for entitlement configuration request * from network. Used by HTTP parameter "notif_token". * *

Optional. */ public abstract Builder setNotificationToken(String value); /** * Sets the action associated with the FCM registration token. Used by HTTP parameter * "notif_action". * *

Required if a token is set with {@link #setNotificationToken}, and default to {@link * #NOTICATION_ACTION_ENABLE_FCM}; otherwise ignored. * * @see #NOTICATION_ACTION_ENABLE_FCM * @see #NOTICATION_ACTION_DISABLE */ public abstract Builder setNotificationAction(int value); /** * Sets the configuration document format the caller accepts, e.g. XML or JSON. Used by HTTP * request header "Accept". * *

If not set, will use {@link #ACCEPT_CONTENT_TYPE_JSON_AND_XML}. * * @see #ACCEPT_CONTENT_TYPE_XML * @see #ACCEPT_CONTENT_TYPE_JSON * @see #ACCEPT_CONTENT_TYPE_JSON_AND_XML */ public abstract Builder setAcceptContentType(String contentType); public abstract ServiceEntitlementRequest build(); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy