fix bug https://github.com/AriaLyy/Aria/issues/508 fix bug https://github.com/AriaLyy/Aria/issues/503 修复m3u8创建索引不成功的问题pull/617/head
parent
012f94511b
commit
5ad485890c
@ -0,0 +1,58 @@ |
|||||||
|
/* |
||||||
|
* 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.sftp; |
||||||
|
|
||||||
|
import com.arialyy.aria.core.inf.OnFileInfoCallback; |
||||||
|
import com.arialyy.aria.core.wrapper.AbsTaskWrapper; |
||||||
|
import com.jcraft.jsch.ChannelSftp; |
||||||
|
import com.jcraft.jsch.JSchException; |
||||||
|
|
||||||
|
/** |
||||||
|
* 获取sftp文件信息 |
||||||
|
* |
||||||
|
* @author lyy |
||||||
|
*/ |
||||||
|
public class AbsSFtpFileInfoThread<WP extends AbsTaskWrapper> implements Runnable { |
||||||
|
|
||||||
|
private WP mWrapper; |
||||||
|
private SFtpUtil mUtil; |
||||||
|
private OnFileInfoCallback mCallback; |
||||||
|
|
||||||
|
public AbsSFtpFileInfoThread(SFtpUtil util, WP wrapper, OnFileInfoCallback callback) { |
||||||
|
mWrapper = wrapper; |
||||||
|
mUtil = util; |
||||||
|
mCallback = callback; |
||||||
|
} |
||||||
|
|
||||||
|
@Override public void run() { |
||||||
|
startFlow(); |
||||||
|
} |
||||||
|
|
||||||
|
private void startFlow() { |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
private ChannelSftp createChannel() { |
||||||
|
ChannelSftp sftp = null; |
||||||
|
try { |
||||||
|
sftp = (ChannelSftp) mUtil.getSession().openChannel(SFtpUtil.CMD_TYPE_SFTP); |
||||||
|
sftp.connect(); |
||||||
|
} catch (JSchException e) { |
||||||
|
e.printStackTrace(); |
||||||
|
} |
||||||
|
return sftp; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,40 @@ |
|||||||
|
/* |
||||||
|
* 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.sftp.download; |
||||||
|
|
||||||
|
import com.arialyy.aria.core.common.SubThreadConfig; |
||||||
|
import com.arialyy.aria.core.task.IThreadTask; |
||||||
|
import com.arialyy.aria.core.task.ThreadTask; |
||||||
|
import com.arialyy.aria.core.wrapper.ITaskWrapper; |
||||||
|
import com.arialyy.aria.ftp.download.FtpDLoaderAdapter; |
||||||
|
|
||||||
|
/** |
||||||
|
* sftp下载适配器 |
||||||
|
* |
||||||
|
* @author lyy |
||||||
|
*/ |
||||||
|
final class SFtpDLoaderAdapter extends FtpDLoaderAdapter { |
||||||
|
SFtpDLoaderAdapter(ITaskWrapper wrapper) { |
||||||
|
super(wrapper); |
||||||
|
} |
||||||
|
|
||||||
|
@Override public IThreadTask createThreadTask(SubThreadConfig config) { |
||||||
|
ThreadTask threadTask = new ThreadTask(config); |
||||||
|
SFtpDThreadTaskAdapter adapter = new SFtpDThreadTaskAdapter(config); |
||||||
|
threadTask.setAdapter(adapter); |
||||||
|
return threadTask; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,71 @@ |
|||||||
|
/* |
||||||
|
* 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.sftp.download; |
||||||
|
|
||||||
|
import com.arialyy.aria.core.common.AbsEntity; |
||||||
|
import com.arialyy.aria.core.common.CompleteInfo; |
||||||
|
import com.arialyy.aria.core.download.DTaskWrapper; |
||||||
|
import com.arialyy.aria.core.inf.OnFileInfoCallback; |
||||||
|
import com.arialyy.aria.core.listener.IEventListener; |
||||||
|
import com.arialyy.aria.core.loader.AbsLoader; |
||||||
|
import com.arialyy.aria.core.loader.AbsNormalLoaderUtil; |
||||||
|
import com.arialyy.aria.core.loader.NormalLoader; |
||||||
|
import com.arialyy.aria.core.wrapper.AbsTaskWrapper; |
||||||
|
import com.arialyy.aria.exception.BaseException; |
||||||
|
import com.arialyy.aria.ftp.FtpTaskOption; |
||||||
|
import com.arialyy.aria.sftp.AbsSFtpFileInfoThread; |
||||||
|
import com.arialyy.aria.sftp.SFtpUtil; |
||||||
|
|
||||||
|
/** |
||||||
|
* sftp下载工具 |
||||||
|
* |
||||||
|
* @author lyy |
||||||
|
*/ |
||||||
|
public class SFtpDLoaderUtil extends AbsNormalLoaderUtil { |
||||||
|
|
||||||
|
private SFtpUtil mSftpUtil; |
||||||
|
|
||||||
|
protected SFtpDLoaderUtil(AbsTaskWrapper wrapper, IEventListener listener) { |
||||||
|
super(wrapper, listener); |
||||||
|
wrapper.generateTaskOption(FtpTaskOption.class); |
||||||
|
FtpTaskOption option = (FtpTaskOption) wrapper.getTaskOption(); |
||||||
|
mSftpUtil = new SFtpUtil.Builder() |
||||||
|
.setIp(option.getUrlEntity().hostName) |
||||||
|
.setPort(Integer.parseInt(option.getUrlEntity().port)) |
||||||
|
.setUserName(option.getUrlEntity().user) |
||||||
|
.setPassword(option.getUrlEntity().password) |
||||||
|
.build(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override protected AbsLoader createLoader() { |
||||||
|
NormalLoader loader = new NormalLoader(getListener(), getTaskWrapper()); |
||||||
|
loader.setAdapter(new SFtpDLoaderAdapter(getTaskWrapper())); |
||||||
|
return loader; |
||||||
|
} |
||||||
|
|
||||||
|
@Override protected Runnable createInfoThread() { |
||||||
|
return new AbsSFtpFileInfoThread<>(mSftpUtil, (DTaskWrapper) getTaskWrapper(), new OnFileInfoCallback() { |
||||||
|
@Override public void onComplete(String key, CompleteInfo info) { |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
@Override public void onFail(AbsEntity entity, BaseException e, boolean needRetry) { |
||||||
|
|
||||||
|
mSftpUtil.logout(); |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
} |
@ -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.sftp.download; |
||||||
|
|
||||||
|
import com.arialyy.aria.core.common.SubThreadConfig; |
||||||
|
import com.arialyy.aria.core.task.AbsThreadTaskAdapter; |
||||||
|
|
||||||
|
/** |
||||||
|
* sftp 线程任务适配器 |
||||||
|
* |
||||||
|
* @author lyy |
||||||
|
*/ |
||||||
|
public class SFtpDThreadTaskAdapter extends AbsThreadTaskAdapter { |
||||||
|
|
||||||
|
SFtpDThreadTaskAdapter(SubThreadConfig config) { |
||||||
|
super(config); |
||||||
|
} |
||||||
|
|
||||||
|
@Override protected void handlerThreadTask() { |
||||||
|
|
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue