From dc65bd0562056a589db8885ae8b911e18ccede30 Mon Sep 17 00:00:00 2001 From: renhaoting <370797079@qq.com> Date: Thu, 4 Dec 2025 16:29:15 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=B7=E6=B1=82=E6=8E=A5=E5=8F=A3=E6=9B=B4?= =?UTF-8?q?=E6=8D=A2-1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/gamedog/vididin/VidiConst.kt | 4 ++- .../com/gamedog/vididin/api/YoutubeApi.kt | 11 ++++---- .../gamedog/vididin/di/GlobalInterceptor.kt | 7 ++++++ .../home/DefaultYoutubeDatasource.kt | 2 +- .../gamedog/vididin/request/RequestUtil.kt | 22 ++++++++++++++++ .../main/res/xml/network_security_config.xml | 1 + .../com/ama/core/architecture/util/MD5Util.kt | 25 +++++++++++++++++++ 7 files changed, 64 insertions(+), 8 deletions(-) create mode 100644 app/src/main/java/com/gamedog/vididin/request/RequestUtil.kt create mode 100644 core/architecture/src/main/java/com/ama/core/architecture/util/MD5Util.kt diff --git a/app/src/main/java/com/gamedog/vididin/VidiConst.kt b/app/src/main/java/com/gamedog/vididin/VidiConst.kt index c7729c7..9b3b19c 100644 --- a/app/src/main/java/com/gamedog/vididin/VidiConst.kt +++ b/app/src/main/java/com/gamedog/vididin/VidiConst.kt @@ -10,7 +10,9 @@ object VidiConst { * 描述:网络常量 * */ - const val URL_YOUTUBE_API = "https://www.googleapis.com" + const val URL_YOUTUBE_API_OLD = "https://www.googleapis.com" + + const val URL_YOUTUBE_API = "http://192.168.110.141:8888" diff --git a/app/src/main/java/com/gamedog/vididin/api/YoutubeApi.kt b/app/src/main/java/com/gamedog/vididin/api/YoutubeApi.kt index bd00403..277285a 100644 --- a/app/src/main/java/com/gamedog/vididin/api/YoutubeApi.kt +++ b/app/src/main/java/com/gamedog/vididin/api/YoutubeApi.kt @@ -44,7 +44,7 @@ interface YoutubeApi { ): ResYoutubePlayList @GET("/youtube/v3/videos") - suspend fun getVideoList( + suspend fun getVideoList_old( @Query("part") part: String= URLEncoder.encode("snippet", "UTF-8"), @Query("key") key: String= VidiConst.YOUTUBE_API_KEY, @Query("videoDuration") videoDuration: String= "short", @@ -56,10 +56,9 @@ interface YoutubeApi { ): ResYoutubePlayList - /* - https://www.googleapis.com/youtube/v3/videos?part=id&chart=mostPopular®ionCode=BR&maxResults=10&key=AIzaSyBm9k2lS_j7Fdd43NEPkcfikJRotup5DMY - https://www.googleapis.com/youtube/v3/videos?part=snippet,statistics&chart=mostPopular®ionCode=BR&maxResults=10&key=AIzaSyBm9k2lS_j7Fdd43NEPkcfikJRotup5DMY - */ - + @GET("/videos") + suspend fun getVideoList( + @Query("video") video: String? = URLEncoder.encode("", "UTF-8"), + ): ResYoutubePlayList } \ No newline at end of file diff --git a/app/src/main/java/com/gamedog/vididin/di/GlobalInterceptor.kt b/app/src/main/java/com/gamedog/vididin/di/GlobalInterceptor.kt index e4368ec..0b53cfe 100644 --- a/app/src/main/java/com/gamedog/vididin/di/GlobalInterceptor.kt +++ b/app/src/main/java/com/gamedog/vididin/di/GlobalInterceptor.kt @@ -2,6 +2,7 @@ package com.gamedog.vididin.core.network.di import android.util.Log +import com.gamedog.vididin.request.RequestUtil import okhttp3.Headers import okhttp3.Interceptor import okhttp3.MediaType.Companion.toMediaType @@ -24,6 +25,7 @@ class GlobalInterceptor : Interceptor { val emptyBody = "{}".toRequestBody("application/json;charset=utf-8".toMediaType()) val requestBody = if (bodyStr.isNotBlank()) request.body else emptyBody + val timeSec = RequestUtil.getTimestampSec() val headersBuilder = Headers.Builder() /* @@ -38,6 +40,11 @@ class GlobalInterceptor : Interceptor { .add("Content-Type", "application/json") .add("Accept", "application/json") .add("Accept-Charset", "utf-8") + // server real defined + .add("ApplicationId", RequestUtil.Request_APPId) + .add("Timestamp", timeSec.toString()) + .add("Sign", RequestUtil.getRequestSign(timeSec)) + val headers = headersBuilder.build() diff --git a/app/src/main/java/com/gamedog/vididin/main/fragments/home/DefaultYoutubeDatasource.kt b/app/src/main/java/com/gamedog/vididin/main/fragments/home/DefaultYoutubeDatasource.kt index 167e6e4..467d81c 100644 --- a/app/src/main/java/com/gamedog/vididin/main/fragments/home/DefaultYoutubeDatasource.kt +++ b/app/src/main/java/com/gamedog/vididin/main/fragments/home/DefaultYoutubeDatasource.kt @@ -17,6 +17,6 @@ class DefaultYoutubeDatasource @Inject constructor(retrofit: Retrofit) : Youtube override suspend fun getChannels( ) = shopApi.getChannelList() - override suspend fun getVideoList(pageToken: String?) = shopApi.getVideoList(pageToken = pageToken) + override suspend fun getVideoList(lastVideoId: String?) = shopApi.getVideoList(video = lastVideoId) } \ No newline at end of file diff --git a/app/src/main/java/com/gamedog/vididin/request/RequestUtil.kt b/app/src/main/java/com/gamedog/vididin/request/RequestUtil.kt new file mode 100644 index 0000000..79d155c --- /dev/null +++ b/app/src/main/java/com/gamedog/vididin/request/RequestUtil.kt @@ -0,0 +1,22 @@ +package com.gamedog.vididin.request + +import com.ama.core.architecture.util.MD5Util + +class RequestUtil private constructor(){ + companion object { + const val Request_APPId = "video1" + const val Request_Sceret = "secret1" + + fun getTimestampSec(): Long { + return System.currentTimeMillis()/1000 + } + + fun getRequestSign(timeSec: Long): String { + val signOrigin = "$Request_APPId-${timeSec}-$Request_Sceret" + return MD5Util.md5(signOrigin)?:"" + } + + + + } +} \ No newline at end of file diff --git a/app/src/main/res/xml/network_security_config.xml b/app/src/main/res/xml/network_security_config.xml index f7f9017..bb00b43 100644 --- a/app/src/main/res/xml/network_security_config.xml +++ b/app/src/main/res/xml/network_security_config.xml @@ -2,6 +2,7 @@ www.googleapis.com + 192.168.110.141 diff --git a/core/architecture/src/main/java/com/ama/core/architecture/util/MD5Util.kt b/core/architecture/src/main/java/com/ama/core/architecture/util/MD5Util.kt new file mode 100644 index 0000000..065ebad --- /dev/null +++ b/core/architecture/src/main/java/com/ama/core/architecture/util/MD5Util.kt @@ -0,0 +1,25 @@ +package com.ama.core.architecture.util + +import java.security.MessageDigest + +object MD5Util { + + fun md5(input: String): String? { + return try { + val messageDigest = MessageDigest.getInstance("MD5") + val digestBytes = messageDigest.digest(input.toByteArray(Charsets.UTF_8)) + val hexString = StringBuilder() + for (b in digestBytes) { + val hex = Integer.toHexString(0xFF and b.toInt()) + if (hex.length == 1) { + hexString.append('0') + } + hexString.append(hex) + } + hexString.toString() + } catch (e: Exception) { + e.printStackTrace() + null + } + } +} \ No newline at end of file