/* * 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.net.Network; import androidx.annotation.Nullable; import com.google.auto.value.AutoValue; /** * Carrier specific customization to be used in the service entitlement queries and operations. * * @see #ServiceEntitlement */ @AutoValue public abstract class CarrierConfig { /** Default value of {@link #timeoutInSec} if not set. */ public static final int DEFAULT_TIMEOUT_IN_SEC = 30; /** The carrier's entitlement server URL. See {@link Builder#setServerUrl}. */ public abstract String serverUrl(); /** Client side timeout for HTTP connection. See {@link Builder#setTimeoutInSec}. */ public abstract int timeoutInSec(); /** The {@link Network} used for HTTP connection. See {@link Builder#setNetwork}. */ @Nullable public abstract Network network(); /** Returns a new {@link Builder} object. */ public static Builder builder() { return new AutoValue_CarrierConfig.Builder() .setServerUrl("") .setTimeoutInSec(DEFAULT_TIMEOUT_IN_SEC); } /** Builder. */ @AutoValue.Builder public abstract static class Builder { public abstract CarrierConfig build(); /** * Sets the carrier's entitlement server URL. If not set, will use {@code * https://aes.mnc.mcc.pub.3gppnetwork.org} as defined in GSMA TS.43 section 2.1. */ public abstract Builder setServerUrl(String url); /** * Sets the client side timeout for HTTP connection. Default to * {@link DEFAULT_TIMEOUT_IN_SEC}. * *

This timeout is used by both {@link java.net.URLConnection#setConnectTimeout} and * {@link java.net.URLConnection#setReadTimeout}. */ public abstract Builder setTimeoutInSec(int timeoutInSec); /** * Sets the {@link Network} used for HTTP connection. If not set, the device default network * is used. */ public abstract Builder setNetwork(Network network); } }