1 /* 2 * Copyright 2017 Google LLC 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions are 6 * met: 7 * 8 * * Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * * Redistributions in binary form must reproduce the above 11 * copyright notice, this list of conditions and the following disclaimer 12 * in the documentation and/or other materials provided with the 13 * distribution. 14 * * Neither the name of Google LLC nor the names of its 15 * contributors may be used to endorse or promote products derived from 16 * this software without specific prior written permission. 17 * 18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 */ 30 package com.google.api.gax.grpc; 31 32 import com.google.api.core.InternalApi; 33 import com.google.api.gax.core.GaxProperties; 34 import io.grpc.Channel; 35 import java.util.regex.Pattern; 36 37 /** Provides properties of the GAX-GRPC library. */ 38 @InternalApi 39 public class GaxGrpcProperties { 40 private static final String GAX_GRPC_VERSION = 41 GaxProperties.getLibraryVersion(GaxGrpcProperties.class, "version.gax_grpc"); 42 private static final String GRPC_VERSION = 43 GaxProperties.getLibraryVersion(Channel.class, "version.io_grpc"); 44 private static final Pattern DEFAULT_API_CLIENT_HEADER_PATTERN = 45 Pattern.compile("gl-java/.+ gapic/.* gax/.+ grpc/.+"); 46 GaxGrpcProperties()47 private GaxGrpcProperties() {} 48 49 /** Returns the current version of gRPC */ getGrpcVersion()50 public static String getGrpcVersion() { 51 return GRPC_VERSION; 52 } 53 getGrpcTokenName()54 public static String getGrpcTokenName() { 55 return "grpc"; 56 } 57 getGaxGrpcVersion()58 public static String getGaxGrpcVersion() { 59 return GAX_GRPC_VERSION; 60 } 61 62 /** Returns default api client header pattern (to facilitate testing) */ getDefaultApiClientHeaderPattern()63 public static Pattern getDefaultApiClientHeaderPattern() { 64 return DEFAULT_API_CLIENT_HEADER_PATTERN; 65 } 66 } 67