1 /* 2 * Copyright 2022 Google LLC 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * https://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.google.cloud.webrisk.v1.stub; 18 19 import com.google.api.core.ApiFunction; 20 import com.google.api.core.BetaApi; 21 import com.google.api.gax.core.GaxProperties; 22 import com.google.api.gax.core.GoogleCredentialsProvider; 23 import com.google.api.gax.core.InstantiatingExecutorProvider; 24 import com.google.api.gax.grpc.GaxGrpcProperties; 25 import com.google.api.gax.grpc.GrpcTransportChannel; 26 import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider; 27 import com.google.api.gax.httpjson.GaxHttpJsonProperties; 28 import com.google.api.gax.httpjson.HttpJsonTransportChannel; 29 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; 30 import com.google.api.gax.retrying.RetrySettings; 31 import com.google.api.gax.rpc.ApiClientHeaderProvider; 32 import com.google.api.gax.rpc.ClientContext; 33 import com.google.api.gax.rpc.StatusCode; 34 import com.google.api.gax.rpc.StubSettings; 35 import com.google.api.gax.rpc.TransportChannelProvider; 36 import com.google.api.gax.rpc.UnaryCallSettings; 37 import com.google.common.collect.ImmutableList; 38 import com.google.common.collect.ImmutableMap; 39 import com.google.common.collect.ImmutableSet; 40 import com.google.common.collect.Lists; 41 import com.google.webrisk.v1.ComputeThreatListDiffRequest; 42 import com.google.webrisk.v1.ComputeThreatListDiffResponse; 43 import com.google.webrisk.v1.CreateSubmissionRequest; 44 import com.google.webrisk.v1.SearchHashesRequest; 45 import com.google.webrisk.v1.SearchHashesResponse; 46 import com.google.webrisk.v1.SearchUrisRequest; 47 import com.google.webrisk.v1.SearchUrisResponse; 48 import com.google.webrisk.v1.Submission; 49 import java.io.IOException; 50 import java.util.List; 51 import javax.annotation.Generated; 52 import org.threeten.bp.Duration; 53 54 // AUTO-GENERATED DOCUMENTATION AND CLASS. 55 /** 56 * Settings class to configure an instance of {@link WebRiskServiceStub}. 57 * 58 * <p>The default instance has everything set to sensible defaults: 59 * 60 * <ul> 61 * <li>The default service address (webrisk.googleapis.com) and default port (443) are used. 62 * <li>Credentials are acquired automatically through Application Default Credentials. 63 * <li>Retries are configured for idempotent methods but not for non-idempotent methods. 64 * </ul> 65 * 66 * <p>The builder of this class is recursive, so contained classes are themselves builders. When 67 * build() is called, the tree of builders is called to create the complete settings object. 68 * 69 * <p>For example, to set the total timeout of computeThreatListDiff to 30 seconds: 70 * 71 * <pre>{@code 72 * // This snippet has been automatically generated and should be regarded as a code template only. 73 * // It will require modifications to work: 74 * // - It may require correct/in-range values for request initialization. 75 * // - It may require specifying regional endpoints when creating the service client as shown in 76 * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library 77 * WebRiskServiceStubSettings.Builder webRiskServiceSettingsBuilder = 78 * WebRiskServiceStubSettings.newBuilder(); 79 * webRiskServiceSettingsBuilder 80 * .computeThreatListDiffSettings() 81 * .setRetrySettings( 82 * webRiskServiceSettingsBuilder 83 * .computeThreatListDiffSettings() 84 * .getRetrySettings() 85 * .toBuilder() 86 * .setTotalTimeout(Duration.ofSeconds(30)) 87 * .build()); 88 * WebRiskServiceStubSettings webRiskServiceSettings = webRiskServiceSettingsBuilder.build(); 89 * }</pre> 90 */ 91 @Generated("by gapic-generator-java") 92 public class WebRiskServiceStubSettings extends StubSettings<WebRiskServiceStubSettings> { 93 /** The default scopes of the service. */ 94 private static final ImmutableList<String> DEFAULT_SERVICE_SCOPES = 95 ImmutableList.<String>builder().add("https://www.googleapis.com/auth/cloud-platform").build(); 96 97 private final UnaryCallSettings<ComputeThreatListDiffRequest, ComputeThreatListDiffResponse> 98 computeThreatListDiffSettings; 99 private final UnaryCallSettings<SearchUrisRequest, SearchUrisResponse> searchUrisSettings; 100 private final UnaryCallSettings<SearchHashesRequest, SearchHashesResponse> searchHashesSettings; 101 private final UnaryCallSettings<CreateSubmissionRequest, Submission> createSubmissionSettings; 102 103 /** Returns the object with the settings used for calls to computeThreatListDiff. */ 104 public UnaryCallSettings<ComputeThreatListDiffRequest, ComputeThreatListDiffResponse> computeThreatListDiffSettings()105 computeThreatListDiffSettings() { 106 return computeThreatListDiffSettings; 107 } 108 109 /** Returns the object with the settings used for calls to searchUris. */ searchUrisSettings()110 public UnaryCallSettings<SearchUrisRequest, SearchUrisResponse> searchUrisSettings() { 111 return searchUrisSettings; 112 } 113 114 /** Returns the object with the settings used for calls to searchHashes. */ searchHashesSettings()115 public UnaryCallSettings<SearchHashesRequest, SearchHashesResponse> searchHashesSettings() { 116 return searchHashesSettings; 117 } 118 119 /** Returns the object with the settings used for calls to createSubmission. */ createSubmissionSettings()120 public UnaryCallSettings<CreateSubmissionRequest, Submission> createSubmissionSettings() { 121 return createSubmissionSettings; 122 } 123 createStub()124 public WebRiskServiceStub createStub() throws IOException { 125 if (getTransportChannelProvider() 126 .getTransportName() 127 .equals(GrpcTransportChannel.getGrpcTransportName())) { 128 return GrpcWebRiskServiceStub.create(this); 129 } 130 if (getTransportChannelProvider() 131 .getTransportName() 132 .equals(HttpJsonTransportChannel.getHttpJsonTransportName())) { 133 return HttpJsonWebRiskServiceStub.create(this); 134 } 135 throw new UnsupportedOperationException( 136 String.format( 137 "Transport not supported: %s", getTransportChannelProvider().getTransportName())); 138 } 139 140 /** Returns a builder for the default ExecutorProvider for this service. */ defaultExecutorProviderBuilder()141 public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() { 142 return InstantiatingExecutorProvider.newBuilder(); 143 } 144 145 /** Returns the default service endpoint. */ getDefaultEndpoint()146 public static String getDefaultEndpoint() { 147 return "webrisk.googleapis.com:443"; 148 } 149 150 /** Returns the default mTLS service endpoint. */ getDefaultMtlsEndpoint()151 public static String getDefaultMtlsEndpoint() { 152 return "webrisk.mtls.googleapis.com:443"; 153 } 154 155 /** Returns the default service scopes. */ getDefaultServiceScopes()156 public static List<String> getDefaultServiceScopes() { 157 return DEFAULT_SERVICE_SCOPES; 158 } 159 160 /** Returns a builder for the default credentials for this service. */ defaultCredentialsProviderBuilder()161 public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilder() { 162 return GoogleCredentialsProvider.newBuilder() 163 .setScopesToApply(DEFAULT_SERVICE_SCOPES) 164 .setUseJwtAccessWithScope(true); 165 } 166 167 /** Returns a builder for the default gRPC ChannelProvider for this service. */ defaultGrpcTransportProviderBuilder()168 public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() { 169 return InstantiatingGrpcChannelProvider.newBuilder() 170 .setMaxInboundMessageSize(Integer.MAX_VALUE); 171 } 172 173 /** Returns a builder for the default REST ChannelProvider for this service. */ 174 @BetaApi 175 public static InstantiatingHttpJsonChannelProvider.Builder defaultHttpJsonTransportProviderBuilder()176 defaultHttpJsonTransportProviderBuilder() { 177 return InstantiatingHttpJsonChannelProvider.newBuilder(); 178 } 179 defaultTransportChannelProvider()180 public static TransportChannelProvider defaultTransportChannelProvider() { 181 return defaultGrpcTransportProviderBuilder().build(); 182 } 183 184 @BetaApi("The surface for customizing headers is not stable yet and may change in the future.") defaultGrpcApiClientHeaderProviderBuilder()185 public static ApiClientHeaderProvider.Builder defaultGrpcApiClientHeaderProviderBuilder() { 186 return ApiClientHeaderProvider.newBuilder() 187 .setGeneratedLibToken( 188 "gapic", GaxProperties.getLibraryVersion(WebRiskServiceStubSettings.class)) 189 .setTransportToken( 190 GaxGrpcProperties.getGrpcTokenName(), GaxGrpcProperties.getGrpcVersion()); 191 } 192 193 @BetaApi("The surface for customizing headers is not stable yet and may change in the future.") defaultHttpJsonApiClientHeaderProviderBuilder()194 public static ApiClientHeaderProvider.Builder defaultHttpJsonApiClientHeaderProviderBuilder() { 195 return ApiClientHeaderProvider.newBuilder() 196 .setGeneratedLibToken( 197 "gapic", GaxProperties.getLibraryVersion(WebRiskServiceStubSettings.class)) 198 .setTransportToken( 199 GaxHttpJsonProperties.getHttpJsonTokenName(), 200 GaxHttpJsonProperties.getHttpJsonVersion()); 201 } 202 defaultApiClientHeaderProviderBuilder()203 public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() { 204 return WebRiskServiceStubSettings.defaultGrpcApiClientHeaderProviderBuilder(); 205 } 206 207 /** Returns a new gRPC builder for this class. */ newBuilder()208 public static Builder newBuilder() { 209 return Builder.createDefault(); 210 } 211 212 /** Returns a new REST builder for this class. */ newHttpJsonBuilder()213 public static Builder newHttpJsonBuilder() { 214 return Builder.createHttpJsonDefault(); 215 } 216 217 /** Returns a new builder for this class. */ newBuilder(ClientContext clientContext)218 public static Builder newBuilder(ClientContext clientContext) { 219 return new Builder(clientContext); 220 } 221 222 /** Returns a builder containing all the values of this settings class. */ toBuilder()223 public Builder toBuilder() { 224 return new Builder(this); 225 } 226 WebRiskServiceStubSettings(Builder settingsBuilder)227 protected WebRiskServiceStubSettings(Builder settingsBuilder) throws IOException { 228 super(settingsBuilder); 229 230 computeThreatListDiffSettings = settingsBuilder.computeThreatListDiffSettings().build(); 231 searchUrisSettings = settingsBuilder.searchUrisSettings().build(); 232 searchHashesSettings = settingsBuilder.searchHashesSettings().build(); 233 createSubmissionSettings = settingsBuilder.createSubmissionSettings().build(); 234 } 235 236 /** Builder for WebRiskServiceStubSettings. */ 237 public static class Builder extends StubSettings.Builder<WebRiskServiceStubSettings, Builder> { 238 private final ImmutableList<UnaryCallSettings.Builder<?, ?>> unaryMethodSettingsBuilders; 239 private final UnaryCallSettings.Builder< 240 ComputeThreatListDiffRequest, ComputeThreatListDiffResponse> 241 computeThreatListDiffSettings; 242 private final UnaryCallSettings.Builder<SearchUrisRequest, SearchUrisResponse> 243 searchUrisSettings; 244 private final UnaryCallSettings.Builder<SearchHashesRequest, SearchHashesResponse> 245 searchHashesSettings; 246 private final UnaryCallSettings.Builder<CreateSubmissionRequest, Submission> 247 createSubmissionSettings; 248 private static final ImmutableMap<String, ImmutableSet<StatusCode.Code>> 249 RETRYABLE_CODE_DEFINITIONS; 250 251 static { 252 ImmutableMap.Builder<String, ImmutableSet<StatusCode.Code>> definitions = 253 ImmutableMap.builder(); 254 definitions.put( 255 "retry_policy_0_codes", 256 ImmutableSet.copyOf( 257 Lists.<StatusCode.Code>newArrayList( 258 StatusCode.Code.DEADLINE_EXCEEDED, StatusCode.Code.UNAVAILABLE))); 259 definitions.put( 260 "no_retry_1_codes", ImmutableSet.copyOf(Lists.<StatusCode.Code>newArrayList())); 261 RETRYABLE_CODE_DEFINITIONS = definitions.build(); 262 } 263 264 private static final ImmutableMap<String, RetrySettings> RETRY_PARAM_DEFINITIONS; 265 266 static { 267 ImmutableMap.Builder<String, RetrySettings> definitions = ImmutableMap.builder(); 268 RetrySettings settings = null; 269 settings = 270 RetrySettings.newBuilder() 271 .setInitialRetryDelay(Duration.ofMillis(100L)) 272 .setRetryDelayMultiplier(1.3) 273 .setMaxRetryDelay(Duration.ofMillis(60000L)) 274 .setInitialRpcTimeout(Duration.ofMillis(600000L)) 275 .setRpcTimeoutMultiplier(1.0) 276 .setMaxRpcTimeout(Duration.ofMillis(600000L)) 277 .setTotalTimeout(Duration.ofMillis(600000L)) 278 .build(); 279 definitions.put("retry_policy_0_params", settings); 280 settings = 281 RetrySettings.newBuilder() 282 .setInitialRpcTimeout(Duration.ofMillis(600000L)) 283 .setRpcTimeoutMultiplier(1.0) 284 .setMaxRpcTimeout(Duration.ofMillis(600000L)) 285 .setTotalTimeout(Duration.ofMillis(600000L)) 286 .build(); 287 definitions.put("no_retry_1_params", settings); 288 RETRY_PARAM_DEFINITIONS = definitions.build(); 289 } 290 Builder()291 protected Builder() { 292 this(((ClientContext) null)); 293 } 294 Builder(ClientContext clientContext)295 protected Builder(ClientContext clientContext) { 296 super(clientContext); 297 298 computeThreatListDiffSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); 299 searchUrisSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); 300 searchHashesSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); 301 createSubmissionSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); 302 303 unaryMethodSettingsBuilders = 304 ImmutableList.<UnaryCallSettings.Builder<?, ?>>of( 305 computeThreatListDiffSettings, 306 searchUrisSettings, 307 searchHashesSettings, 308 createSubmissionSettings); 309 initDefaults(this); 310 } 311 Builder(WebRiskServiceStubSettings settings)312 protected Builder(WebRiskServiceStubSettings settings) { 313 super(settings); 314 315 computeThreatListDiffSettings = settings.computeThreatListDiffSettings.toBuilder(); 316 searchUrisSettings = settings.searchUrisSettings.toBuilder(); 317 searchHashesSettings = settings.searchHashesSettings.toBuilder(); 318 createSubmissionSettings = settings.createSubmissionSettings.toBuilder(); 319 320 unaryMethodSettingsBuilders = 321 ImmutableList.<UnaryCallSettings.Builder<?, ?>>of( 322 computeThreatListDiffSettings, 323 searchUrisSettings, 324 searchHashesSettings, 325 createSubmissionSettings); 326 } 327 createDefault()328 private static Builder createDefault() { 329 Builder builder = new Builder(((ClientContext) null)); 330 331 builder.setTransportChannelProvider(defaultTransportChannelProvider()); 332 builder.setCredentialsProvider(defaultCredentialsProviderBuilder().build()); 333 builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); 334 builder.setEndpoint(getDefaultEndpoint()); 335 builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); 336 builder.setSwitchToMtlsEndpointAllowed(true); 337 338 return initDefaults(builder); 339 } 340 createHttpJsonDefault()341 private static Builder createHttpJsonDefault() { 342 Builder builder = new Builder(((ClientContext) null)); 343 344 builder.setTransportChannelProvider(defaultHttpJsonTransportProviderBuilder().build()); 345 builder.setCredentialsProvider(defaultCredentialsProviderBuilder().build()); 346 builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); 347 builder.setEndpoint(getDefaultEndpoint()); 348 builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); 349 builder.setSwitchToMtlsEndpointAllowed(true); 350 351 return initDefaults(builder); 352 } 353 initDefaults(Builder builder)354 private static Builder initDefaults(Builder builder) { 355 builder 356 .computeThreatListDiffSettings() 357 .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes")) 358 .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params")); 359 360 builder 361 .searchUrisSettings() 362 .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes")) 363 .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params")); 364 365 builder 366 .searchHashesSettings() 367 .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes")) 368 .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params")); 369 370 builder 371 .createSubmissionSettings() 372 .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes")) 373 .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_1_params")); 374 375 return builder; 376 } 377 378 /** 379 * Applies the given settings updater function to all of the unary API methods in this service. 380 * 381 * <p>Note: This method does not support applying settings to streaming methods. 382 */ applyToAllUnaryMethods( ApiFunction<UnaryCallSettings.Builder<?, ?>, Void> settingsUpdater)383 public Builder applyToAllUnaryMethods( 384 ApiFunction<UnaryCallSettings.Builder<?, ?>, Void> settingsUpdater) { 385 super.applyToAllUnaryMethods(unaryMethodSettingsBuilders, settingsUpdater); 386 return this; 387 } 388 unaryMethodSettingsBuilders()389 public ImmutableList<UnaryCallSettings.Builder<?, ?>> unaryMethodSettingsBuilders() { 390 return unaryMethodSettingsBuilders; 391 } 392 393 /** Returns the builder for the settings used for calls to computeThreatListDiff. */ 394 public UnaryCallSettings.Builder<ComputeThreatListDiffRequest, ComputeThreatListDiffResponse> computeThreatListDiffSettings()395 computeThreatListDiffSettings() { 396 return computeThreatListDiffSettings; 397 } 398 399 /** Returns the builder for the settings used for calls to searchUris. */ searchUrisSettings()400 public UnaryCallSettings.Builder<SearchUrisRequest, SearchUrisResponse> searchUrisSettings() { 401 return searchUrisSettings; 402 } 403 404 /** Returns the builder for the settings used for calls to searchHashes. */ 405 public UnaryCallSettings.Builder<SearchHashesRequest, SearchHashesResponse> searchHashesSettings()406 searchHashesSettings() { 407 return searchHashesSettings; 408 } 409 410 /** Returns the builder for the settings used for calls to createSubmission. */ 411 public UnaryCallSettings.Builder<CreateSubmissionRequest, Submission> createSubmissionSettings()412 createSubmissionSettings() { 413 return createSubmissionSettings; 414 } 415 416 @Override build()417 public WebRiskServiceStubSettings build() throws IOException { 418 return new WebRiskServiceStubSettings(this); 419 } 420 } 421 } 422