From 34e60bd578b1132996095f1f66e7bffba324cf16 Mon Sep 17 00:00:00 2001 From: laoyuyu <511455842@qq.com> Date: Mon, 20 Feb 2023 22:00:39 +0800 Subject: [PATCH] http group component --- HttpGroup/.gitignore | 1 + HttpGroup/build.gradle | 15 ++++++ HttpGroup/consumer-rules.pro | 0 HttpGroup/proguard-rules.pro | 21 ++++++++ HttpGroup/src/main/AndroidManifest.xml | 2 + .../java/com/arialyy/dua/group/DGroupUtil.kt | 46 ++++++++++++++++ .../arialyy/dua/group/HttpGroupComponent.kt | 30 +++++++++++ .../src/main/resources/META-INF/MANIFEST.MF | 2 + .../com.arialyy.aria.core.inf.IComponentInit | 1 + .../arialyy/aria/core/task/AbsGroupTask.java | 53 ------------------ .../aria/core/task/DownloadGroupTask.java | 54 ++++--------------- settings.gradle | 2 +- 12 files changed, 128 insertions(+), 99 deletions(-) create mode 100644 HttpGroup/.gitignore create mode 100644 HttpGroup/build.gradle create mode 100644 HttpGroup/consumer-rules.pro create mode 100644 HttpGroup/proguard-rules.pro create mode 100644 HttpGroup/src/main/AndroidManifest.xml create mode 100644 HttpGroup/src/main/java/com/arialyy/dua/group/DGroupUtil.kt create mode 100644 HttpGroup/src/main/java/com/arialyy/dua/group/HttpGroupComponent.kt create mode 100644 HttpGroup/src/main/resources/META-INF/MANIFEST.MF create mode 100644 HttpGroup/src/main/resources/META-INF/services/com.arialyy.aria.core.inf.IComponentInit delete mode 100644 PublicComponent/src/main/java/com/arialyy/aria/core/task/AbsGroupTask.java diff --git a/HttpGroup/.gitignore b/HttpGroup/.gitignore new file mode 100644 index 00000000..796b96d1 --- /dev/null +++ b/HttpGroup/.gitignore @@ -0,0 +1 @@ +/build diff --git a/HttpGroup/build.gradle b/HttpGroup/build.gradle new file mode 100644 index 00000000..61852072 --- /dev/null +++ b/HttpGroup/build.gradle @@ -0,0 +1,15 @@ +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) + + implementation project(path: ':PublicComponent') + implementation project(path: ':Http') + implementation(libs.bundles.room) + implementation(libs.kt.coroutines) + kapt libs.room.compiler +} + +//apply from: 'bintray-release.gradle' +ext { + PUBLISH_ARTIFACT_ID = 'http' +} +apply from: '../gradle/mavenCentral-release.gradle' \ No newline at end of file diff --git a/HttpGroup/consumer-rules.pro b/HttpGroup/consumer-rules.pro new file mode 100644 index 00000000..e69de29b diff --git a/HttpGroup/proguard-rules.pro b/HttpGroup/proguard-rules.pro new file mode 100644 index 00000000..f1b42451 --- /dev/null +++ b/HttpGroup/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile diff --git a/HttpGroup/src/main/AndroidManifest.xml b/HttpGroup/src/main/AndroidManifest.xml new file mode 100644 index 00000000..bb0d2bdf --- /dev/null +++ b/HttpGroup/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + diff --git a/HttpGroup/src/main/java/com/arialyy/dua/group/DGroupUtil.kt b/HttpGroup/src/main/java/com/arialyy/dua/group/DGroupUtil.kt new file mode 100644 index 00000000..f9b8e68e --- /dev/null +++ b/HttpGroup/src/main/java/com/arialyy/dua/group/DGroupUtil.kt @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2016 AriaLyy(https://github.com/AriaLyy/Aria) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.arialyy.dua.group + +import com.arialyy.aria.core.inf.IBlockManager +import com.arialyy.aria.core.task.AbsTaskUtil + +/** + * @Author laoyuyu + * @Description + * @Date 21:58 2023/2/20 + **/ +internal class DGroupUtil : AbsTaskUtil() { + override fun getBlockManager(): IBlockManager { + TODO("Not yet implemented") + } + + override fun isRunning(): Boolean { + TODO("Not yet implemented") + } + + override fun cancel() { + TODO("Not yet implemented") + } + + override fun stop() { + TODO("Not yet implemented") + } + + override fun start() { + TODO("Not yet implemented") + } +} \ No newline at end of file diff --git a/HttpGroup/src/main/java/com/arialyy/dua/group/HttpGroupComponent.kt b/HttpGroup/src/main/java/com/arialyy/dua/group/HttpGroupComponent.kt new file mode 100644 index 00000000..7280540f --- /dev/null +++ b/HttpGroup/src/main/java/com/arialyy/dua/group/HttpGroupComponent.kt @@ -0,0 +1,30 @@ +/* + * Copyright (C) 2016 AriaLyy(https://github.com/AriaLyy/Aria) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.arialyy.dua.group + +import android.content.Context +import com.arialyy.aria.core.inf.IComponentInit + +/** + * @Author laoyuyu + * @Description + * @Date 21:51 2023/2/20 + **/ +class HttpGroupComponent : IComponentInit { + override fun init(context: Context) { + + } +} \ No newline at end of file diff --git a/HttpGroup/src/main/resources/META-INF/MANIFEST.MF b/HttpGroup/src/main/resources/META-INF/MANIFEST.MF new file mode 100644 index 00000000..59499bce --- /dev/null +++ b/HttpGroup/src/main/resources/META-INF/MANIFEST.MF @@ -0,0 +1,2 @@ +Manifest-Version: 1.0 + diff --git a/HttpGroup/src/main/resources/META-INF/services/com.arialyy.aria.core.inf.IComponentInit b/HttpGroup/src/main/resources/META-INF/services/com.arialyy.aria.core.inf.IComponentInit new file mode 100644 index 00000000..510f8e0a --- /dev/null +++ b/HttpGroup/src/main/resources/META-INF/services/com.arialyy.aria.core.inf.IComponentInit @@ -0,0 +1 @@ +com.arialyy.dua.group.HttpGroupComponent \ No newline at end of file diff --git a/PublicComponent/src/main/java/com/arialyy/aria/core/task/AbsGroupTask.java b/PublicComponent/src/main/java/com/arialyy/aria/core/task/AbsGroupTask.java deleted file mode 100644 index bc925169..00000000 --- a/PublicComponent/src/main/java/com/arialyy/aria/core/task/AbsGroupTask.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (C) 2016 AriaLyy(https://github.com/AriaLyy/Aria) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.arialyy.aria.core.task; - -import com.arialyy.aria.core.download.AbsGroupTaskWrapper; -import com.arialyy.aria.core.group.AbsGroupLoaderUtil; - -/** - * Created by AriaL on 2017/6/29. - * 任务组任务抽象类 - */ -public abstract class AbsGroupTask - extends AbsTask { - - @Override public String getKey() { - return mTaskWrapper.getEntity().getKey(); - } - - /** - * 启动任务组中的子任务 - * - * @param url 子任务下载地址 - */ - public void startSubTask(String url) { - if (getTaskUtil() != null) { - ((AbsGroupLoaderUtil) getTaskUtil()).startSubTask(url); - } - } - - /** - * 停止任务组中的子任务 - * - * @param url 子任务下载地址 - */ - public void stopSubTask(String url) { - if (getTaskUtil() != null) { - ((AbsGroupLoaderUtil) getTaskUtil()).stopSubTask(url); - } - } -} diff --git a/PublicComponent/src/main/java/com/arialyy/aria/core/task/DownloadGroupTask.java b/PublicComponent/src/main/java/com/arialyy/aria/core/task/DownloadGroupTask.java index ac5820d3..9fa2b650 100644 --- a/PublicComponent/src/main/java/com/arialyy/aria/core/task/DownloadGroupTask.java +++ b/PublicComponent/src/main/java/com/arialyy/aria/core/task/DownloadGroupTask.java @@ -15,62 +15,26 @@ */ package com.arialyy.aria.core.task; -import android.os.Handler; -import android.os.Looper; -import android.text.TextUtils; -import com.arialyy.aria.core.AriaConfig; -import com.arialyy.aria.core.download.DGTaskWrapper; -import com.arialyy.aria.core.download.DownloadGroupEntity; -import com.arialyy.aria.core.listener.ISchedulers; -import com.arialyy.aria.util.ComponentUtil; +import com.arialyy.aria.core.download.DTaskOption; +import com.arialyy.aria.core.inf.ITaskOption; +import com.arialyy.aria.core.inf.ITaskUtil; +import java.util.Objects; /** * Created by AriaL on 2017/6/27. * 任务组任务 */ -public class DownloadGroupTask extends AbsGroupTask { +public class DownloadGroupTask extends AbsTask { - private DownloadGroupTask(DGTaskWrapper taskWrapper, Handler outHandler) { - mTaskWrapper = taskWrapper; - mOutHandler = outHandler; - mContext = AriaConfig.getInstance().getAPP(); - mListener = - ComponentUtil.getInstance().buildListener(taskWrapper.getRequestType(), this, mOutHandler); - } - - public DownloadGroupEntity getEntity() { - return mTaskWrapper.getEntity(); - } - - @Override public String getTaskName() { - return "任务组->" + (TextUtils.isEmpty(mTaskWrapper.getEntity().getAlias()) - ? mTaskWrapper.getEntity().getGroupHash() : mTaskWrapper.getEntity().getAlias()); + protected DownloadGroupTask(ITaskOption taskOption, ITaskUtil util) { + super(taskOption, util); } @Override public int getTaskType() { return DOWNLOAD_GROUP; } - public static class Builder { - DGTaskWrapper taskEntity; - Handler outHandler; - - public Builder(DGTaskWrapper taskEntity) { - this.taskEntity = taskEntity; - } - - /** - * 设置自定义Handler处理下载状态时间 - * - * @param schedulers {@link ISchedulers} - */ - public DownloadGroupTask.Builder setOutHandler(ISchedulers schedulers) { - outHandler = new Handler(Looper.getMainLooper(), schedulers); - return this; - } - - public DownloadGroupTask build() { - return new DownloadGroupTask(taskEntity, outHandler); - } + @Override public String getFilePath() { + return Objects.requireNonNull(getTaskOption(DTaskOption.class).getSavePathUri()).toString(); } } diff --git a/settings.gradle b/settings.gradle index 3307b1fa..234a5a57 100644 --- a/settings.gradle +++ b/settings.gradle @@ -56,7 +56,7 @@ gradle.rootProject { def componentList = [':app', ':Aria', ':AriaAnnotations', ':AriaCompiler', ':AppFrame', ':Http', ':M3U8Component', ':SFtpComponent', ':FtpComponent', ':PublicComponent', - ':Queue', ':Schedulers' + ':Queue', ':Schedulers', ":HttpGroup" ] componentList.forEach {