From 2b1f7a47394363e95deb4dfa0f1c67d41e747f7f Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期三, 01 二月 2023 10:56:40 +0800
Subject: [PATCH] Merge branch 'wvp-28181-2.0' into fix-269

---
 src/main/java/com/genersoft/iot/vmp/media/zlm/AssistRESTfulUtils.java |  148 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 148 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/AssistRESTfulUtils.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/AssistRESTfulUtils.java
new file mode 100644
index 0000000..5ba5191
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/AssistRESTfulUtils.java
@@ -0,0 +1,148 @@
+package com.genersoft.iot.vmp.media.zlm;
+
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
+import okhttp3.*;
+import okhttp3.logging.HttpLoggingInterceptor;
+import org.jetbrains.annotations.NotNull;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+import org.springframework.util.ObjectUtils;
+import org.springframework.util.StringUtils;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.net.ConnectException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+import java.util.concurrent.TimeUnit;
+
+@Component
+public class AssistRESTfulUtils {
+
+    private final static Logger logger = LoggerFactory.getLogger(AssistRESTfulUtils.class);
+
+    public interface RequestCallback{
+        void run(JSONObject response);
+    }
+
+    private OkHttpClient getClient(){
+        OkHttpClient.Builder httpClientBuilder = new OkHttpClient.Builder();
+        if (logger.isDebugEnabled()) {
+            HttpLoggingInterceptor logging = new HttpLoggingInterceptor(message -> {
+                logger.debug("http璇锋眰鍙傛暟锛�" + message);
+            });
+            logging.setLevel(HttpLoggingInterceptor.Level.BASIC);
+            // OkHttp閫茶娣诲姞鏀旀埅鍣╨oggingInterceptor
+            httpClientBuilder.addInterceptor(logging);
+        }
+        return httpClientBuilder.build();
+    }
+
+
+    public JSONObject sendGet(MediaServerItem mediaServerItem, String api, Map<String, Object> param, RequestCallback callback) {
+        OkHttpClient client = getClient();
+
+        if (mediaServerItem == null) {
+            return null;
+        }
+        if (mediaServerItem.getRecordAssistPort() <= 0) {
+            logger.warn("鏈惎鐢ˋssist鏈嶅姟");
+            return null;
+        }
+        StringBuffer stringBuffer = new StringBuffer();
+        stringBuffer.append(String.format("http://%s:%s/%s",  mediaServerItem.getIp(), mediaServerItem.getRecordAssistPort(), api));
+        JSONObject responseJSON = null;
+
+        if (param != null && param.keySet().size() > 0) {
+            stringBuffer.append("?");
+            int index = 1;
+            for (String key : param.keySet()){
+                if (param.get(key) != null) {
+                    stringBuffer.append(key + "=" + param.get(key));
+                    if (index < param.size()) {
+                        stringBuffer.append("&");
+                    }
+                }
+                index++;
+            }
+        }
+
+        String url = stringBuffer.toString();
+        Request request = new Request.Builder()
+                .get()
+                .url(url)
+                .build();
+            if (callback == null) {
+                try {
+                    Response response = client.newCall(request).execute();
+                    if (response.isSuccessful()) {
+                        ResponseBody responseBody = response.body();
+                        if (responseBody != null) {
+                            String responseStr = responseBody.string();
+                            responseJSON = JSON.parseObject(responseStr);
+                        }
+                    }else {
+                        response.close();
+                        Objects.requireNonNull(response.body()).close();
+                    }
+                } catch (ConnectException e) {
+                    logger.error(String.format("杩炴帴Assist澶辫触: %s, %s", e.getCause().getMessage(), e.getMessage()));
+                    logger.info("璇锋鏌edia閰嶇疆骞剁‘璁ssist宸插惎鍔�...");
+                }catch (IOException e) {
+                    logger.error(String.format("[ %s ]璇锋眰澶辫触: %s", url, e.getMessage()));
+                }
+            }else {
+                client.newCall(request).enqueue(new Callback(){
+
+                    @Override
+                    public void onResponse(@NotNull Call call, @NotNull Response response){
+                        if (response.isSuccessful()) {
+                            try {
+                                String responseStr = Objects.requireNonNull(response.body()).string();
+                                callback.run(JSON.parseObject(responseStr));
+                            } catch (IOException e) {
+                                logger.error(String.format("[ %s ]璇锋眰澶辫触: %s", url, e.getMessage()));
+                            }
+
+                        }else {
+                            response.close();
+                            Objects.requireNonNull(response.body()).close();
+                        }
+                    }
+
+                    @Override
+                    public void onFailure(@NotNull Call call, @NotNull IOException e) {
+                        logger.error(String.format("杩炴帴Assist澶辫触: %s, %s", e.getCause().getMessage(), e.getMessage()));
+                        logger.info("璇锋鏌edia閰嶇疆骞剁‘璁ssist宸插惎鍔�...");
+                    }
+                });
+            }
+
+
+
+        return responseJSON;
+    }
+
+
+    public JSONObject fileDuration(MediaServerItem mediaServerItem, String app, String stream, RequestCallback callback){
+        Map<String, Object> param = new HashMap<>();
+        param.put("app",app);
+        param.put("stream",stream);
+        param.put("recordIng",true);
+        return sendGet(mediaServerItem, "api/record/file/duration",param, callback);
+    }
+
+    public JSONObject addStreamCallInfo(MediaServerItem mediaServerItem, String app, String stream, String callId, RequestCallback callback){
+        Map<String, Object> param = new HashMap<>();
+        param.put("app",app);
+        param.put("stream",stream);
+        param.put("callId",callId);
+        return sendGet(mediaServerItem, "api/record/addStreamCallInfo",param, callback);
+    }
+
+}

--
Gitblit v1.8.0