From e2c7686da08911ba50b7d1c79ced89e510adbf4c Mon Sep 17 00:00:00 2001 From: laoyuyu Date: Tue, 21 Feb 2023 21:20:22 +0800 Subject: [PATCH] uploader --- .../aria/http/HttpBaseStartController.kt | 33 ++++++++++ .../arialyy/aria/http/HttpComponentLoader.kt | 12 ++++ .../HttpDTaskOption.kt => HttpTaskOption.kt} | 7 +- .../java/com/arialyy/aria/http/HttpUtil.kt | 3 +- .../download/HttpBlockThreadInterceptor.kt | 3 +- .../aria/http/download/HttpDBTaskAdapter.kt | 6 +- .../http/download/HttpDBlockInterceptor.kt | 11 ++-- .../aria/http/download/HttpDCTTaskAdapter.kt | 6 +- .../http/download/HttpDHeaderInterceptor.kt | 9 +-- ...tController.kt => HttpDStartController.kt} | 64 +++++++------------ .../aria/http/download/HttpDTaskUtil.kt | 7 +- .../aria/http/download/HttpDownloader.kt | 4 +- .../arialyy/aria/http/upload/HttpULoader.kt | 35 ++++++++++ .../{HttpULoader.java => HttpULoader1.java} | 4 +- .../aria/http/upload/HttpULoaderUtil.java | 2 +- .../aria/http/upload/HttpUStartController.kt | 53 +++++++++++++++ .../{DTaskOption.kt => TaskOption.kt} | 2 +- .../arialyy/aria/core/inf/IComponentLoader.kt | 3 +- .../com/arialyy/aria/core/inf/IDownloader.kt | 4 +- .../com/arialyy/aria/core/inf/IUploader.kt | 23 +++++++ .../arialyy/aria/core/task/DownloadTask.java | 10 +-- 21 files changed, 219 insertions(+), 82 deletions(-) rename Http/src/main/java/com/arialyy/aria/http/{download/HttpDTaskOption.kt => HttpTaskOption.kt} (88%) rename Http/src/main/java/com/arialyy/aria/http/download/{HttpDStartStartController.kt => HttpDStartController.kt} (64%) create mode 100644 Http/src/main/java/com/arialyy/aria/http/upload/HttpULoader.kt rename Http/src/main/java/com/arialyy/aria/http/upload/{HttpULoader.java => HttpULoader1.java} (95%) create mode 100644 Http/src/main/java/com/arialyy/aria/http/upload/HttpUStartController.kt rename PublicComponent/src/main/java/com/arialyy/aria/core/download/{DTaskOption.kt => TaskOption.kt} (95%) create mode 100644 PublicComponent/src/main/java/com/arialyy/aria/core/inf/IUploader.kt diff --git a/Http/src/main/java/com/arialyy/aria/http/HttpBaseStartController.kt b/Http/src/main/java/com/arialyy/aria/http/HttpBaseStartController.kt index f36ed5bf..9b42233d 100644 --- a/Http/src/main/java/com/arialyy/aria/http/HttpBaseStartController.kt +++ b/Http/src/main/java/com/arialyy/aria/http/HttpBaseStartController.kt @@ -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 + } } \ No newline at end of file diff --git a/Http/src/main/java/com/arialyy/aria/http/HttpComponentLoader.kt b/Http/src/main/java/com/arialyy/aria/http/HttpComponentLoader.kt index eaa6f85f..3763db4c 100644 --- a/Http/src/main/java/com/arialyy/aria/http/HttpComponentLoader.kt +++ b/Http/src/main/java/com/arialyy/aria/http/HttpComponentLoader.kt @@ -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 download(): T { @@ -40,6 +47,11 @@ class HttpComponentLoader : IComponentLoader { return downloader as T } + override fun upload(): T { + loader = uploader + return uploader as T + } + override fun getTaskEnum(): TaskEnum { return loader.getTaskEnum() } diff --git a/Http/src/main/java/com/arialyy/aria/http/download/HttpDTaskOption.kt b/Http/src/main/java/com/arialyy/aria/http/HttpTaskOption.kt similarity index 88% rename from Http/src/main/java/com/arialyy/aria/http/download/HttpDTaskOption.kt rename to Http/src/main/java/com/arialyy/aria/http/HttpTaskOption.kt index 399fd685..22aa09b0 100644 --- a/Http/src/main/java/com/arialyy/aria/http/download/HttpDTaskOption.kt +++ b/Http/src/main/java/com/arialyy/aria/http/HttpTaskOption.kt @@ -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 diff --git a/Http/src/main/java/com/arialyy/aria/http/HttpUtil.kt b/Http/src/main/java/com/arialyy/aria/http/HttpUtil.kt index f48d015c..991fec64 100644 --- a/Http/src/main/java/com/arialyy/aria/http/HttpUtil.kt +++ b/Http/src/main/java/com/arialyy/aria/http/HttpUtil.kt @@ -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 diff --git a/Http/src/main/java/com/arialyy/aria/http/download/HttpBlockThreadInterceptor.kt b/Http/src/main/java/com/arialyy/aria/http/download/HttpBlockThreadInterceptor.kt index 0da2c718..0a0db408 100644 --- a/Http/src/main/java/com/arialyy/aria/http/download/HttpBlockThreadInterceptor.kt +++ b/Http/src/main/java/com/arialyy/aria/http/download/HttpBlockThreadInterceptor.kt @@ -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() 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( diff --git a/Http/src/main/java/com/arialyy/aria/http/download/HttpDBTaskAdapter.kt b/Http/src/main/java/com/arialyy/aria/http/download/HttpDBTaskAdapter.kt index 29d221df..6bc2a111 100644 --- a/Http/src/main/java/com/arialyy/aria/http/download/HttpDBTaskAdapter.kt +++ b/Http/src/main/java/com/arialyy/aria/http/download/HttpDBTaskAdapter.kt @@ -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() { diff --git a/Http/src/main/java/com/arialyy/aria/http/download/HttpDBlockInterceptor.kt b/Http/src/main/java/com/arialyy/aria/http/download/HttpDBlockInterceptor.kt index 9bb98982..816e880c 100644 --- a/Http/src/main/java/com/arialyy/aria/http/download/HttpDBlockInterceptor.kt +++ b/Http/src/main/java/com/arialyy/aria/http/download/HttpDBlockInterceptor.kt @@ -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 ) ) diff --git a/Http/src/main/java/com/arialyy/aria/http/download/HttpDCTTaskAdapter.kt b/Http/src/main/java/com/arialyy/aria/http/download/HttpDCTTaskAdapter.kt index b50e07e8..d85403ee 100644 --- a/Http/src/main/java/com/arialyy/aria/http/download/HttpDCTTaskAdapter.kt +++ b/Http/src/main/java/com/arialyy/aria/http/download/HttpDCTTaskAdapter.kt @@ -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() { diff --git a/Http/src/main/java/com/arialyy/aria/http/download/HttpDHeaderInterceptor.kt b/Http/src/main/java/com/arialyy/aria/http/download/HttpDHeaderInterceptor.kt index e57c0e8b..4c5995b7 100644 --- a/Http/src/main/java/com/arialyy/aria/http/download/HttpDHeaderInterceptor.kt +++ b/Http/src/main/java/com/arialyy/aria/http/download/HttpDHeaderInterceptor.kt @@ -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>, - taskOption: HttpDTaskOption + taskOption: HttpTaskOption ): Long { var lenAdapter = taskOption.fileSizeAdapter if (lenAdapter == null) { diff --git a/Http/src/main/java/com/arialyy/aria/http/download/HttpDStartStartController.kt b/Http/src/main/java/com/arialyy/aria/http/download/HttpDStartController.kt similarity index 64% rename from Http/src/main/java/com/arialyy/aria/http/download/HttpDStartStartController.kt rename to Http/src/main/java/com/arialyy/aria/http/download/HttpDStartController.kt index 39a48b43..dd711273 100644 --- a/Http/src/main/java/com/arialyy/aria/http/download/HttpDStartStartController.kt +++ b/Http/src/main/java/com/arialyy/aria/http/download/HttpDStartController.kt @@ -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() diff --git a/Http/src/main/java/com/arialyy/aria/http/download/HttpDTaskUtil.kt b/Http/src/main/java/com/arialyy/aria/http/download/HttpDTaskUtil.kt index 40ad7d49..3fafe7c2 100644 --- a/Http/src/main/java/com/arialyy/aria/http/download/HttpDTaskUtil.kt +++ b/Http/src/main/java/com/arialyy/aria/http/download/HttpDTaskUtil.kt @@ -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}") ) diff --git a/Http/src/main/java/com/arialyy/aria/http/download/HttpDownloader.kt b/Http/src/main/java/com/arialyy/aria/http/download/HttpDownloader.kt index d65a1469..bb39fea9 100644 --- a/Http/src/main/java/com/arialyy/aria/http/download/HttpDownloader.kt +++ b/Http/src/main/java/com/arialyy/aria/http/download/HttpDownloader.kt @@ -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) } /** diff --git a/Http/src/main/java/com/arialyy/aria/http/upload/HttpULoader.kt b/Http/src/main/java/com/arialyy/aria/http/upload/HttpULoader.kt new file mode 100644 index 00000000..486ed5d3 --- /dev/null +++ b/Http/src/main/java/com/arialyy/aria/http/upload/HttpULoader.kt @@ -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) + } +} \ No newline at end of file diff --git a/Http/src/main/java/com/arialyy/aria/http/upload/HttpULoader.java b/Http/src/main/java/com/arialyy/aria/http/upload/HttpULoader1.java similarity index 95% rename from Http/src/main/java/com/arialyy/aria/http/upload/HttpULoader.java rename to Http/src/main/java/com/arialyy/aria/http/upload/HttpULoader1.java index 63a49f97..6ce2cebb 100644 --- a/Http/src/main/java/com/arialyy/aria/http/upload/HttpULoader.java +++ b/Http/src/main/java/com/arialyy/aria/http/upload/HttpULoader1.java @@ -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 { - HttpULoader(UTaskWrapper wrapper, IEventListener listener) { +final class HttpULoader1 extends AbsNormalLoader { + HttpULoader1(UTaskWrapper wrapper, IEventListener listener) { super(wrapper, listener); } diff --git a/Http/src/main/java/com/arialyy/aria/http/upload/HttpULoaderUtil.java b/Http/src/main/java/com/arialyy/aria/http/upload/HttpULoaderUtil.java index 256e5f3a..18ae510b 100644 --- a/Http/src/main/java/com/arialyy/aria/http/upload/HttpULoaderUtil.java +++ b/Http/src/main/java/com/arialyy/aria/http/upload/HttpULoaderUtil.java @@ -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; } diff --git a/Http/src/main/java/com/arialyy/aria/http/upload/HttpUStartController.kt b/Http/src/main/java/com/arialyy/aria/http/upload/HttpUStartController.kt new file mode 100644 index 00000000..bf25e9c2 --- /dev/null +++ b/Http/src/main/java/com/arialyy/aria/http/upload/HttpUStartController.kt @@ -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 + } +} \ No newline at end of file diff --git a/PublicComponent/src/main/java/com/arialyy/aria/core/download/DTaskOption.kt b/PublicComponent/src/main/java/com/arialyy/aria/core/download/TaskOption.kt similarity index 95% rename from PublicComponent/src/main/java/com/arialyy/aria/core/download/DTaskOption.kt rename to PublicComponent/src/main/java/com/arialyy/aria/core/download/TaskOption.kt index ce34fc56..361c2b9a 100644 --- a/PublicComponent/src/main/java/com/arialyy/aria/core/download/DTaskOption.kt +++ b/PublicComponent/src/main/java/com/arialyy/aria/core/download/TaskOption.kt @@ -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 diff --git a/PublicComponent/src/main/java/com/arialyy/aria/core/inf/IComponentLoader.kt b/PublicComponent/src/main/java/com/arialyy/aria/core/inf/IComponentLoader.kt index da0d3cea..6eb95622 100644 --- a/PublicComponent/src/main/java/com/arialyy/aria/core/inf/IComponentLoader.kt +++ b/PublicComponent/src/main/java/com/arialyy/aria/core/inf/IComponentLoader.kt @@ -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 download(): T + fun upload(): T + fun getTaskEnum(): TaskEnum } \ No newline at end of file diff --git a/PublicComponent/src/main/java/com/arialyy/aria/core/inf/IDownloader.kt b/PublicComponent/src/main/java/com/arialyy/aria/core/inf/IDownloader.kt index 60a49b53..8b3c79f9 100644 --- a/PublicComponent/src/main/java/com/arialyy/aria/core/inf/IDownloader.kt +++ b/PublicComponent/src/main/java/com/arialyy/aria/core/inf/IDownloader.kt @@ -20,6 +20,4 @@ package com.arialyy.aria.core.inf * @Description * @Date 14:04 AM 2023/1/20 **/ -interface IDownloader : IBaseLoader { - -} \ No newline at end of file +interface IDownloader : IBaseLoader \ No newline at end of file diff --git a/PublicComponent/src/main/java/com/arialyy/aria/core/inf/IUploader.kt b/PublicComponent/src/main/java/com/arialyy/aria/core/inf/IUploader.kt new file mode 100644 index 00000000..e1b23d26 --- /dev/null +++ b/PublicComponent/src/main/java/com/arialyy/aria/core/inf/IUploader.kt @@ -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 \ No newline at end of file diff --git a/PublicComponent/src/main/java/com/arialyy/aria/core/task/DownloadTask.java b/PublicComponent/src/main/java/com/arialyy/aria/core/task/DownloadTask.java index 24073ae0..06d198b2 100644 --- a/PublicComponent/src/main/java/com/arialyy/aria/core/task/DownloadTask.java +++ b/PublicComponent/src/main/java/com/arialyy/aria/core/task/DownloadTask.java @@ -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(); } } \ No newline at end of file