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