v4
laoyuyu 2 years ago
parent 34e60bd578
commit e2c7686da0
  1. 33
      Http/src/main/java/com/arialyy/aria/http/HttpBaseStartController.kt
  2. 12
      Http/src/main/java/com/arialyy/aria/http/HttpComponentLoader.kt
  3. 7
      Http/src/main/java/com/arialyy/aria/http/HttpTaskOption.kt
  4. 3
      Http/src/main/java/com/arialyy/aria/http/HttpUtil.kt
  5. 3
      Http/src/main/java/com/arialyy/aria/http/download/HttpBlockThreadInterceptor.kt
  6. 6
      Http/src/main/java/com/arialyy/aria/http/download/HttpDBTaskAdapter.kt
  7. 11
      Http/src/main/java/com/arialyy/aria/http/download/HttpDBlockInterceptor.kt
  8. 6
      Http/src/main/java/com/arialyy/aria/http/download/HttpDCTTaskAdapter.kt
  9. 9
      Http/src/main/java/com/arialyy/aria/http/download/HttpDHeaderInterceptor.kt
  10. 64
      Http/src/main/java/com/arialyy/aria/http/download/HttpDStartController.kt
  11. 7
      Http/src/main/java/com/arialyy/aria/http/download/HttpDTaskUtil.kt
  12. 4
      Http/src/main/java/com/arialyy/aria/http/download/HttpDownloader.kt
  13. 35
      Http/src/main/java/com/arialyy/aria/http/upload/HttpULoader.kt
  14. 4
      Http/src/main/java/com/arialyy/aria/http/upload/HttpULoader1.java
  15. 2
      Http/src/main/java/com/arialyy/aria/http/upload/HttpULoaderUtil.java
  16. 53
      Http/src/main/java/com/arialyy/aria/http/upload/HttpUStartController.kt
  17. 2
      PublicComponent/src/main/java/com/arialyy/aria/core/download/TaskOption.kt
  18. 3
      PublicComponent/src/main/java/com/arialyy/aria/core/inf/IComponentLoader.kt
  19. 4
      PublicComponent/src/main/java/com/arialyy/aria/core/inf/IDownloader.kt
  20. 23
      PublicComponent/src/main/java/com/arialyy/aria/core/inf/IUploader.kt
  21. 10
      PublicComponent/src/main/java/com/arialyy/aria/core/task/DownloadTask.java

@ -15,11 +15,44 @@
*/
package com.arialyy.aria.http
import com.arialyy.aria.core.task.ITaskInterceptor
import timber.log.Timber
/**
* @Author laoyuyu
* @Description
* @Date 12:40 PM 2023/1/22
**/
open class HttpBaseStartController(val target: Any) {
protected var httpTaskOption = HttpTaskOption()
/**
* set http params, link Header
*/
open fun setHttpOption(httpOption: HttpOption): HttpBaseStartController {
httpTaskOption.httpOption = httpOption
return this
}
/**
* use multi-threaded download file, if file size <= 5m, this setting is not valid
* @param threadNum range [1 - 32]
*/
open fun setThreadNum(threadNum: Int): HttpBaseStartController {
if (threadNum !in 1..32) {
Timber.e("set thread num fail, only 0 < threadNum < 33, threadNum: $threadNum")
return this
}
httpTaskOption.threadNum = threadNum
return this
}
/**
* if you want to do something before the task is executed, you can set up a task interceptor
* eg: determine the network status before task execution
*/
open fun setTaskInterceptor(taskInterceptor: ITaskInterceptor): HttpBaseStartController {
httpTaskOption.taskInterceptor.add(taskInterceptor)
return this
}
}

@ -20,7 +20,9 @@ import com.arialyy.aria.core.DuaContext
import com.arialyy.aria.core.inf.IBaseLoader
import com.arialyy.aria.core.inf.IComponentLoader
import com.arialyy.aria.core.inf.IDownloader
import com.arialyy.aria.core.inf.IUploader
import com.arialyy.aria.http.download.HttpDownloader
import com.arialyy.aria.http.upload.HttpULoader
import kotlin.LazyThreadSafetyMode.SYNCHRONIZED
/**
@ -33,6 +35,11 @@ class HttpComponentLoader : IComponentLoader {
private val downloader by lazy(SYNCHRONIZED) {
HttpDownloader(DuaContext.getLifeManager().getTargetByLoader(this)!!)
}
private val uploader by lazy(SYNCHRONIZED) {
HttpULoader(DuaContext.getLifeManager().getTargetByLoader(this)!!)
}
private lateinit var loader: IBaseLoader
override fun <T : IDownloader> download(): T {
@ -40,6 +47,11 @@ class HttpComponentLoader : IComponentLoader {
return downloader as T
}
override fun <T : IUploader> upload(): T {
loader = uploader
return uploader as T
}
override fun getTaskEnum(): TaskEnum {
return loader.getTaskEnum()
}

@ -13,19 +13,18 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.arialyy.aria.http.download
package com.arialyy.aria.http
import com.arialyy.aria.core.download.DTaskOption
import com.arialyy.aria.core.download.TaskOption
import com.arialyy.aria.core.processor.IHttpFileLenAdapter
import com.arialyy.aria.core.task.ITaskInterceptor
import com.arialyy.aria.http.HttpOption
/**
* @Author laoyuyu
* @Description
* @Date 12:47 PM 2023/1/22
**/
class HttpDTaskOption : DTaskOption() {
class HttpTaskOption : TaskOption() {
var httpOption: HttpOption? = null
var fileSizeAdapter: IHttpFileLenAdapter? = null

@ -19,7 +19,6 @@ import android.net.Uri
import android.text.TextUtils
import com.arialyy.aria.core.inf.ITaskUtil
import com.arialyy.aria.core.task.TaskCachePool
import com.arialyy.aria.http.download.HttpDTaskOption
import com.arialyy.aria.http.download.HttpDTaskUtil
import com.arialyy.aria.util.FileUtils
import com.arialyy.aria.util.Regular
@ -88,7 +87,7 @@ internal object HttpUtil {
return connection.inputStream
}
fun checkHttpDParams(option: HttpDTaskOption?): Boolean {
fun checkHttpDParams(option: HttpTaskOption?): Boolean {
if (option == null) {
Timber.e("option is null")
return false

@ -22,6 +22,7 @@ import com.arialyy.aria.core.task.TaskChain
import com.arialyy.aria.core.task.TaskResp
import com.arialyy.aria.core.task.ThreadConfig
import com.arialyy.aria.core.task.ThreadTask2
import com.arialyy.aria.http.HttpTaskOption
import com.arialyy.aria.orm.entity.BlockRecord
/**
@ -44,7 +45,7 @@ class HttpBlockThreadInterceptor : ITaskInterceptor {
val threadTaskList = mutableListOf<IThreadTask>()
blockRecordList.forEach {
val option = chain.getTask().getTaskOption(HttpDTaskOption::class.java)
val option = chain.getTask().getTaskOption(HttpTaskOption::class.java)
val threadConfig = ThreadConfig(it, option, DuaContext.getDConfig().maxSpeed)
threadTaskList.add(
ThreadTask2(

@ -17,7 +17,7 @@ package com.arialyy.aria.http.download
import com.arialyy.aria.core.task.AbsThreadTaskAdapter
import com.arialyy.aria.core.task.ThreadConfig
import com.arialyy.aria.http.ConnectionHelp
import com.arialyy.aria.http.HttpTaskOption
import com.arialyy.aria.http.HttpUtil
import com.arialyy.aria.http.request.IRequest.Companion.getRequest
import timber.log.Timber
@ -35,8 +35,8 @@ import java.nio.channels.Channels
**/
class HttpDBTaskAdapter(threadConfig: ThreadConfig) : AbsThreadTaskAdapter(threadConfig) {
private fun getTaskOption(): HttpDTaskOption {
return threadConfig.option as HttpDTaskOption
private fun getTaskOption(): HttpTaskOption {
return threadConfig.option as HttpTaskOption
}
override fun handlerThreadTask() {

@ -22,6 +22,7 @@ import com.arialyy.aria.core.task.ITask
import com.arialyy.aria.core.task.ITaskInterceptor
import com.arialyy.aria.core.task.TaskChain
import com.arialyy.aria.core.task.TaskResp
import com.arialyy.aria.http.HttpTaskOption
import com.arialyy.aria.orm.entity.BlockRecord
import com.arialyy.aria.orm.entity.TaskRecord
import com.arialyy.aria.util.FileUri
@ -38,20 +39,20 @@ import java.io.File
*/
internal class HttpDBlockInterceptor : ITaskInterceptor {
private lateinit var task: ITask
private lateinit var option: HttpDTaskOption
private lateinit var option: HttpTaskOption
private lateinit var blockManager: IBlockManager
private lateinit var taskRecord: TaskRecord
override suspend fun interceptor(chain: TaskChain): TaskResp {
task = chain.getTask()
blockManager = chain.blockManager
option = task.getTaskOption(HttpDTaskOption::class.java)
option = task.getTaskOption(HttpTaskOption::class.java)
if (task.taskState.fileSize < 0) {
Timber.e("file size < 0")
return TaskResp(TaskResp.CODE_GET_FILE_INFO_FAIL)
}
val savePath = FileUri.getPathByUri(task.getTaskOption(HttpDTaskOption::class.java).savePathUri)
val savePath = FileUri.getPathByUri(task.getTaskOption(HttpTaskOption::class.java).savePathUri)
if (savePath.isNullOrEmpty()) {
Timber.e("saveUri is null")
return TaskResp(TaskResp.CODE_SAVE_URI_NULL)
@ -76,7 +77,7 @@ internal class HttpDBlockInterceptor : ITaskInterceptor {
}
private fun removeBlock() {
val saveUri = task.getTaskOption(HttpDTaskOption::class.java).savePathUri
val saveUri = task.getTaskOption(HttpTaskOption::class.java).savePathUri
if (!FileUtils.uriEffective(saveUri)) {
return
}
@ -108,7 +109,7 @@ internal class HttpDBlockInterceptor : ITaskInterceptor {
taskRecord.blockList.addAll(
BlockUtil.createBlockRecord(
task.getTaskOption(HttpDTaskOption::class.java).savePathUri!!,
task.getTaskOption(HttpTaskOption::class.java).savePathUri!!,
task.taskState.fileSize
)
)

@ -17,7 +17,7 @@ package com.arialyy.aria.http.download
import com.arialyy.aria.core.task.AbsThreadTaskAdapter
import com.arialyy.aria.core.task.ThreadConfig
import com.arialyy.aria.http.ConnectionHelp
import com.arialyy.aria.http.HttpTaskOption
import com.arialyy.aria.http.HttpUtil
import com.arialyy.aria.http.request.IRequest.Companion.getRequest
import java.io.BufferedInputStream
@ -34,8 +34,8 @@ import java.nio.channels.Channels
**/
class HttpDCTTaskAdapter(threadConfig: ThreadConfig) : AbsThreadTaskAdapter(threadConfig) {
private fun getTaskOption(): HttpDTaskOption {
return threadConfig.option as HttpDTaskOption
private fun getTaskOption(): HttpTaskOption {
return threadConfig.option as HttpTaskOption
}
override fun handlerThreadTask() {

@ -25,6 +25,7 @@ import com.arialyy.aria.core.task.ITask
import com.arialyy.aria.core.task.ITaskInterceptor
import com.arialyy.aria.core.task.TaskChain
import com.arialyy.aria.core.task.TaskResp
import com.arialyy.aria.http.HttpTaskOption
import com.arialyy.aria.http.HttpUtil
import com.arialyy.aria.http.request.IRequest
import com.arialyy.aria.orm.entity.BlockRecord
@ -43,7 +44,7 @@ import java.util.UUID
**/
internal class HttpDHeaderInterceptor : ITaskInterceptor {
private lateinit var task: ITask
private lateinit var taskOption: HttpDTaskOption
private lateinit var taskOption: HttpTaskOption
companion object {
private val CODE_30X = listOf(
@ -58,7 +59,7 @@ internal class HttpDHeaderInterceptor : ITaskInterceptor {
}
Timber.i("step 1. get file info")
task = chain.getTask()
taskOption = task.getTaskOption(HttpDTaskOption::class.java)
taskOption = task.getTaskOption(HttpTaskOption::class.java)
try {
val fileSize = getFileSize()
if (fileSize >= 0) {
@ -70,7 +71,7 @@ internal class HttpDHeaderInterceptor : ITaskInterceptor {
} catch (e: IOException) {
Timber.e(
"download fail, url: ${
chain.getTask().getTaskOption(HttpDTaskOption::class.java).sourUrl
chain.getTask().getTaskOption(HttpTaskOption::class.java).sourUrl
}"
)
return TaskResp(TaskResp.CODE_GET_FILE_INFO_FAIL)
@ -191,7 +192,7 @@ internal class HttpDHeaderInterceptor : ITaskInterceptor {
*/
private fun getFileSizeFromHeader(
header: Map<String, List<String>>,
taskOption: HttpDTaskOption
taskOption: HttpTaskOption
): Long {
var lenAdapter = taskOption.fileSizeAdapter
if (lenAdapter == null) {

@ -26,10 +26,10 @@ import com.arialyy.aria.core.task.ITaskInterceptor
import com.arialyy.aria.core.task.TaskCachePool
import com.arialyy.aria.http.HttpBaseStartController
import com.arialyy.aria.http.HttpOption
import com.arialyy.aria.http.HttpTaskOption
import com.arialyy.aria.http.HttpUtil
import com.arialyy.aria.orm.entity.DEntity
import kotlinx.coroutines.launch
import timber.log.Timber
import java.net.HttpURLConnection
/**
@ -37,57 +37,37 @@ import java.net.HttpURLConnection
* @Description
* @Date 12:38 PM 2023/1/22
**/
class HttpDStartStartController(target: Any, val url: String) : HttpBaseStartController(target),
class HttpDStartController(target: Any, val url: String) : HttpBaseStartController(target),
IStartController {
private var httpDTaskOption = HttpDTaskOption()
init {
httpDTaskOption.sourUrl = url
httpTaskOption.sourUrl = url
}
/**
* use multi-threaded download file, if file size <= 5m, this setting is not valid
* @param threadNum range [1 - 32]
*/
fun setThreadNum(threadNum: Int): HttpDStartStartController {
if (threadNum !in 1..32) {
Timber.e("set thread num fail, only 0 < threadNum < 33, threadNum: $threadNum")
return this
}
httpDTaskOption.threadNum = threadNum
return this
override fun setTaskInterceptor(taskInterceptor: ITaskInterceptor): HttpDStartController {
return super.setTaskInterceptor(taskInterceptor) as HttpDStartController
}
/**
* set http params, link Header
*/
fun setHttpOption(httpOption: HttpOption): HttpDStartStartController {
httpDTaskOption.httpOption = httpOption
return this
override fun setThreadNum(threadNum: Int): HttpDStartController {
return super.setThreadNum(threadNum) as HttpDStartController
}
/**
* Maybe the server has special rules, you need set [IHttpFileLenAdapter] to get the file length from [HttpURLConnection.getHeaderFields]
*/
fun setHttpFileLenAdapter(adapter: IHttpFileLenAdapter): HttpDStartStartController {
httpDTaskOption.fileSizeAdapter = adapter
return this
override fun setHttpOption(httpOption: HttpOption): HttpDStartController {
return super.setHttpOption(httpOption) as HttpDStartController
}
/**
* if you want to do something before the task is executed, you can set up a task interceptor
* eg: determine the network status before task execution
* Maybe the server has special rules, you need set [IHttpFileLenAdapter] to get the file length from [HttpURLConnection.getHeaderFields]
*/
fun setTaskInterceptor(taskInterceptor: ITaskInterceptor): HttpDStartStartController {
httpDTaskOption.taskInterceptor.add(taskInterceptor)
fun setHttpFileLenAdapter(adapter: IHttpFileLenAdapter): HttpDStartController {
httpTaskOption.fileSizeAdapter = adapter
return this
}
/**
* set download listener
*/
fun setListener(listener: HttpDownloadListener): HttpDStartStartController {
fun setListener(listener: HttpDownloadListener): HttpDStartController {
DuaContext.getLifeManager().addCustomListener(target, listener)
return this
}
@ -95,24 +75,24 @@ class HttpDStartStartController(target: Any, val url: String) : HttpBaseStartCon
/**
* set file save path, eg: /mnt/sdcard/Downloads/test.zip
*/
fun setSavePath(savePath: Uri): HttpDStartStartController {
httpDTaskOption.savePathUri = savePath
fun setSavePath(savePath: Uri): HttpDStartController {
httpTaskOption.savePathUri = savePath
return this
}
private fun createTask(): DownloadTask {
if (HttpUtil.checkHttpDParams(httpDTaskOption)) {
if (HttpUtil.checkHttpDParams(httpTaskOption)) {
throw IllegalArgumentException("invalid params")
}
val savePath = httpDTaskOption.savePathUri!!
val savePath = httpTaskOption.savePathUri!!
var util = TaskCachePool.getTaskUtil(savePath)
if (util == null) {
util = HttpDTaskUtil()
TaskCachePool.putTaskUtil(savePath, util)
}
val task = DownloadTask(httpDTaskOption, util)
val task = DownloadTask(httpTaskOption, util)
DuaContext.duaScope.launch {
val dEntity = findDEntityBySavePath(httpDTaskOption)
val dEntity = findDEntityBySavePath(httpTaskOption)
TaskCachePool.putEntity(task.taskId, dEntity)
}
TaskCachePool.putTask(task)
@ -122,7 +102,7 @@ class HttpDStartStartController(target: Any, val url: String) : HttpBaseStartCon
/**
* find DEntity, if that not exist, create and save it
*/
private suspend fun findDEntityBySavePath(option: HttpDTaskOption): DEntity {
private suspend fun findDEntityBySavePath(option: HttpTaskOption): DEntity {
val savePath = option.savePathUri
val dao = DuaContext.getServiceManager().getDbService().getDuaDb().getDEntityDao()
val de = dao.getDEntityBySavePath(savePath.toString())
@ -138,7 +118,7 @@ class HttpDStartStartController(target: Any, val url: String) : HttpBaseStartCon
}
override fun add(): Int {
if (!HttpUtil.checkHttpDParams(httpDTaskOption)) {
if (!HttpUtil.checkHttpDParams(httpTaskOption)) {
return -1
}
val task = createTask()
@ -147,7 +127,7 @@ class HttpDStartStartController(target: Any, val url: String) : HttpBaseStartCon
}
override fun start(): Int {
if (!HttpUtil.checkHttpDParams(httpDTaskOption)) {
if (!HttpUtil.checkHttpDParams(httpTaskOption)) {
return -1
}
val task = createTask()

@ -24,6 +24,7 @@ import com.arialyy.aria.core.task.DownloadTask
import com.arialyy.aria.core.task.TaskResp
import com.arialyy.aria.core.task.ThreadTaskManager2
import com.arialyy.aria.exception.AriaException
import com.arialyy.aria.http.HttpTaskOption
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
@ -37,7 +38,7 @@ internal class HttpDTaskUtil : AbsTaskUtil() {
private var blockManager: BlockManager? = null
init {
getTask().getTaskOption(HttpDTaskOption::class.java).eventListener =
getTask().getTaskOption(HttpTaskOption::class.java).eventListener =
HttpDEventListener(getTask() as DownloadTask)
}
@ -65,7 +66,7 @@ internal class HttpDTaskUtil : AbsTaskUtil() {
}
override fun start() {
getTask().getTaskOption(HttpDTaskOption::class.java).taskInterceptor.let {
getTask().getTaskOption(HttpTaskOption::class.java).taskInterceptor.let {
if (it.isNotEmpty()) {
addInterceptors(it)
}
@ -79,7 +80,7 @@ internal class HttpDTaskUtil : AbsTaskUtil() {
addCoreInterceptor(HttpBlockThreadInterceptor())
val resp = interceptor()
if (resp == null || resp.code != TaskResp.CODE_SUCCESS) {
getTask().getTaskOption(HttpDTaskOption::class.java).eventListener.onFail(
getTask().getTaskOption(HttpTaskOption::class.java).eventListener.onFail(
false,
AriaException("start task fail, task interrupt, code: ${resp?.code ?: TaskResp.CODE_INTERRUPT}")
)

@ -35,8 +35,8 @@ class HttpDownloader(val target: Any) : IDownloader {
* start, create a task
* @param url download url
*/
fun load(url: String): HttpDStartStartController {
return HttpDStartStartController(target, url)
fun load(url: String): HttpDStartController {
return HttpDStartController(target, url)
}
/**

@ -0,0 +1,35 @@
/*
* 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.http.upload
import android.net.Uri
import com.arialyy.annotations.TaskEnum
import com.arialyy.aria.core.inf.IUploader
/**
* @Author laoyuyu
* @Description
* @Date 2:24 PM 2023/2/20
**/
class HttpULoader(val target: Any) : IUploader {
override fun getTaskEnum(): TaskEnum {
return TaskEnum.UPLOAD
}
fun load(filePath: Uri): HttpUStartController {
return HttpUStartController(target, filePath)
}
}

@ -30,8 +30,8 @@ import com.arialyy.aria.exception.AriaHTTPException;
import com.arialyy.aria.util.ALog;
import java.util.List;
final class HttpULoader extends AbsNormalLoader<UTaskWrapper> {
HttpULoader(UTaskWrapper wrapper, IEventListener listener) {
final class HttpULoader1 extends AbsNormalLoader<UTaskWrapper> {
HttpULoader1(UTaskWrapper wrapper, IEventListener listener) {
super(wrapper, listener);
}

@ -37,7 +37,7 @@ public final class HttpULoaderUtil extends AbsNormalLoaderUtil {
@Override public AbsNormalLoader getLoader() {
if (mLoader == null) {
getTaskWrapper().generateTaskOption(HttpTaskOption.class);
mLoader = new HttpULoader((UTaskWrapper) getTaskWrapper(), getListener());
mLoader = new HttpULoader1((UTaskWrapper) getTaskWrapper(), getListener());
}
return mLoader;
}

@ -0,0 +1,53 @@
/*
* 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.http.upload
import android.net.Uri
import com.arialyy.aria.core.task.ITaskInterceptor
import com.arialyy.aria.http.HttpBaseStartController
import com.arialyy.aria.http.HttpOption
/**
* @Author laoyuyu
* @Description
* @Date 8:39 PM 2023/2/20
**/
class HttpUStartController(target: Any, val filePath: Uri) : HttpBaseStartController(target) {
init {
httpTaskOption.savePathUri = filePath
}
override fun setTaskInterceptor(taskInterceptor: ITaskInterceptor): HttpUStartController {
return super.setTaskInterceptor(taskInterceptor) as HttpUStartController
}
override fun setThreadNum(threadNum: Int): HttpUStartController {
return super.setThreadNum(threadNum) as HttpUStartController
}
override fun setHttpOption(httpOption: HttpOption): HttpUStartController {
return super.setHttpOption(httpOption) as HttpUStartController
}
/**
* set uploader service url
*/
fun setUploadUrl(url: String): HttpUStartController {
httpTaskOption.sourUrl = url
return this
}
}

@ -23,7 +23,7 @@ import com.arialyy.aria.core.inf.ITaskOption
* @Description
* @Date 4:16 PM 2023/1/25
**/
open class DTaskOption : ITaskOption() {
open class TaskOption : ITaskOption() {
var sourUrl: String? = null
var savePathUri: Uri? = null
var redirectUrl: String? = null

@ -16,7 +16,6 @@
package com.arialyy.aria.core.inf
import com.arialyy.annotations.TaskEnum
import com.arialyy.aria.core.listener.ITaskStatusListener
/**
* @Author laoyuyu
@ -33,5 +32,7 @@ interface IComponentLoader {
fun <T : IDownloader> download(): T
fun <T : IUploader> upload(): T
fun getTaskEnum(): TaskEnum
}

@ -20,6 +20,4 @@ package com.arialyy.aria.core.inf
* @Description
* @Date 14:04 AM 2023/1/20
**/
interface IDownloader : IBaseLoader {
}
interface IDownloader : IBaseLoader

@ -0,0 +1,23 @@
/*
* 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.inf
/**
* @Author laoyuyu
* @Description
* @Date 14:04 AM 2023/1/20
**/
interface IUploader : IBaseLoader

@ -17,7 +17,7 @@
package com.arialyy.aria.core.task;
import android.net.Uri;
import com.arialyy.aria.core.download.DTaskOption;
import com.arialyy.aria.core.download.TaskOption;
import com.arialyy.aria.core.inf.ITaskUtil;
import java.util.Objects;
@ -27,16 +27,16 @@ import java.util.Objects;
*/
public class DownloadTask extends AbsTask {
public DownloadTask(DTaskOption taskOption, ITaskUtil util) {
public DownloadTask(TaskOption taskOption, ITaskUtil util) {
super(taskOption, util);
}
public Uri getSavePath() {
return getTaskOption(DTaskOption.class).getSavePathUri();
return getTaskOption(TaskOption.class).getSavePathUri();
}
public String getSourceUrl() {
return getTaskOption(DTaskOption.class).getSourUrl();
return getTaskOption(TaskOption.class).getSourUrl();
}
/**
@ -47,6 +47,6 @@ public class DownloadTask extends AbsTask {
}
@Override public String getFilePath() {
return Objects.requireNonNull(getTaskOption(DTaskOption.class).getSavePathUri()).toString();
return Objects.requireNonNull(getTaskOption(TaskOption.class).getSavePathUri()).toString();
}
}
Loading…
Cancel
Save