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