From 80b6cbfc9c861469146318d0b3dd5f8b8b525b8a Mon Sep 17 00:00:00 2001
From: xiejun <xiejun@vci-tech.com>
Date: 星期五, 01 十一月 2024 15:11:19 +0800
Subject: [PATCH] Revert "集成获取mdm分发通用数据格式接口集成"

---
 Source/BladeX-Tool/blade-core-cloud/src/main/java/org/springblade/core/cloud/http/RestTemplateConfiguration.java |  191 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 191 insertions(+), 0 deletions(-)

diff --git a/Source/BladeX-Tool/blade-core-cloud/src/main/java/org/springblade/core/cloud/http/RestTemplateConfiguration.java b/Source/BladeX-Tool/blade-core-cloud/src/main/java/org/springblade/core/cloud/http/RestTemplateConfiguration.java
new file mode 100644
index 0000000..354660b
--- /dev/null
+++ b/Source/BladeX-Tool/blade-core-cloud/src/main/java/org/springblade/core/cloud/http/RestTemplateConfiguration.java
@@ -0,0 +1,191 @@
+/*
+ *      Copyright (c) 2018-2028, DreamLu All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: DreamLu 鍗㈡槬姊� (596392912@qq.com)
+ */
+package org.springblade.core.cloud.http;
+
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import okhttp3.ConnectionPool;
+import okhttp3.OkHttpClient;
+import org.springblade.core.cloud.http.logger.HttpLoggingInterceptor;
+import org.springblade.core.cloud.http.logger.OkHttpSlf4jLogger;
+import org.springblade.core.tool.ssl.DisableValidationTrustManager;
+import org.springblade.core.tool.ssl.TrustAllHostNames;
+import org.springblade.core.tool.utils.Charsets;
+import org.springblade.core.tool.utils.Holder;
+import org.springframework.boot.autoconfigure.AutoConfiguration;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.boot.web.client.RestTemplateBuilder;
+import org.springframework.cloud.client.loadbalancer.LoadBalanced;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.Bean;
+import org.springframework.http.client.OkHttp3ClientHttpRequestFactory;
+import org.springframework.http.converter.HttpMessageConverter;
+import org.springframework.http.converter.StringHttpMessageConverter;
+import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
+import org.springframework.web.client.RestTemplate;
+
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLSocketFactory;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.X509TrustManager;
+import java.security.KeyManagementException;
+import java.security.NoSuchAlgorithmException;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Http RestTemplateHeaderInterceptor 閰嶇疆
+ *
+ * @author L.cm
+ */
+@Slf4j
+@RequiredArgsConstructor
+@AutoConfiguration
+@ConditionalOnClass(OkHttpClient.class)
+@ConditionalOnProperty(value = "blade.http.enabled", matchIfMissing = true)
+public class RestTemplateConfiguration {
+	private final BladeHttpProperties properties;
+
+	/**
+	 * okhttp3 璇锋眰鏃ュ織鎷︽埅鍣�
+	 *
+	 * @return HttpLoggingInterceptor
+	 */
+	@Bean
+	public HttpLoggingInterceptor loggingInterceptor() {
+		HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(new OkHttpSlf4jLogger());
+		interceptor.setLevel(properties.getLevel());
+		return interceptor;
+	}
+
+	/**
+	 * okhttp3 閾炬帴姹犻厤缃�
+	 *
+	 * @return okhttp3.ConnectionPool
+	 */
+	@Bean
+	@ConditionalOnMissingBean
+	public ConnectionPool httpClientConnectionPool() {
+		int maxTotalConnections = properties.getMaxConnections();
+		long timeToLive = properties.getTimeToLive();
+		TimeUnit ttlUnit = properties.getTimeUnit();
+		return new ConnectionPool(maxTotalConnections, timeToLive, ttlUnit);
+	}
+
+	/**
+	 * 閰嶇疆OkHttpClient
+	 *
+	 * @param connectionPool 閾炬帴姹犻厤缃�
+	 * @param interceptor    鎷︽埅鍣�
+	 * @return OkHttpClient
+	 */
+	@Bean
+	@ConditionalOnMissingBean
+	public OkHttpClient okHttpClient(ConnectionPool connectionPool, HttpLoggingInterceptor interceptor) {
+		boolean followRedirects = properties.isFollowRedirects();
+		int connectTimeout = properties.getConnectionTimeout();
+		return this.createBuilder(properties.isDisableSslValidation())
+			.connectTimeout(connectTimeout, TimeUnit.MILLISECONDS)
+			.writeTimeout(30, TimeUnit.SECONDS)
+			.readTimeout(30, TimeUnit.SECONDS)
+			.followRedirects(followRedirects)
+			.connectionPool(connectionPool)
+			.addInterceptor(interceptor)
+			.build();
+	}
+
+	private OkHttpClient.Builder createBuilder(boolean disableSslValidation) {
+		OkHttpClient.Builder builder = new OkHttpClient.Builder();
+		if (disableSslValidation) {
+			try {
+				X509TrustManager disabledTrustManager = DisableValidationTrustManager.INSTANCE;
+				TrustManager[] trustManagers = new TrustManager[]{disabledTrustManager};
+				SSLContext sslContext = SSLContext.getInstance("SSL");
+				sslContext.init(null, trustManagers, Holder.SECURE_RANDOM);
+				SSLSocketFactory disabledSslSocketFactory = sslContext.getSocketFactory();
+				builder.sslSocketFactory(disabledSslSocketFactory, disabledTrustManager);
+				builder.hostnameVerifier(TrustAllHostNames.INSTANCE);
+			} catch (NoSuchAlgorithmException | KeyManagementException e) {
+				log.warn("Error setting SSLSocketFactory in OKHttpClient", e);
+			}
+		}
+		return builder;
+	}
+
+	@Bean
+	public RestTemplateHeaderInterceptor requestHeaderInterceptor() {
+		return new RestTemplateHeaderInterceptor();
+	}
+
+	@AutoConfiguration
+	@RequiredArgsConstructor
+	@ConditionalOnClass(OkHttpClient.class)
+	@ConditionalOnProperty(value = "blade.http.rest-template.enable")
+	public static class RestTemplateAutoConfiguration {
+		private final ApplicationContext context;
+
+		/**
+		 * 鏅�氱殑 RestTemplate锛屼笉閫忎紶璇锋眰澶达紝涓�鑸彧鍋氬閮� http 璋冪敤
+		 *
+		 * @param okHttpClient OkHttpClient
+		 * @return RestTemplate
+		 */
+		@Bean
+		@ConditionalOnMissingBean
+		public RestTemplate restTemplate(RestTemplateBuilder restTemplateBuilder, OkHttpClient okHttpClient) {
+			restTemplateBuilder.requestFactory(() -> new OkHttp3ClientHttpRequestFactory(okHttpClient));
+			RestTemplate restTemplate = restTemplateBuilder.build();
+			configMessageConverters(context, restTemplate.getMessageConverters());
+			return restTemplate;
+		}
+	}
+
+	@AutoConfiguration
+	@RequiredArgsConstructor
+	@ConditionalOnClass(OkHttpClient.class)
+	@ConditionalOnProperty(value = "blade.http.lb-rest-template.enable")
+	public static class LbRestTemplateAutoConfiguration {
+		private final ApplicationContext context;
+
+		/**
+		 * 鏀寔璐熻浇鍧囪 鐨� LbRestTemplate
+		 *
+		 * @param okHttpClient OkHttpClient
+		 * @return LbRestTemplate
+		 */
+		@Bean
+		@LoadBalanced
+		@ConditionalOnMissingBean
+		public LbRestTemplate lbRestTemplate(RestTemplateBuilder restTemplateBuilder, OkHttpClient okHttpClient) {
+			restTemplateBuilder.requestFactory(() -> new OkHttp3ClientHttpRequestFactory(okHttpClient));
+			LbRestTemplate restTemplate = restTemplateBuilder.build(LbRestTemplate.class);
+			restTemplate.getInterceptors().add(context.getBean(RestTemplateHeaderInterceptor.class));
+			configMessageConverters(context, restTemplate.getMessageConverters());
+			return restTemplate;
+		}
+	}
+
+	private static void configMessageConverters(ApplicationContext context, List<HttpMessageConverter<?>> converters) {
+		converters.removeIf(x -> x instanceof StringHttpMessageConverter || x instanceof MappingJackson2HttpMessageConverter);
+		converters.add(new StringHttpMessageConverter(Charsets.UTF_8));
+		converters.add(new MappingJackson2HttpMessageConverter(context.getBean(ObjectMapper.class)));
+	}
+}

--
Gitblit v1.9.3