Sfoglia il codice sorgente

种子访问权限

詹子聪 6 anni fa
parent
commit
1eb6040546

+ 4 - 0
app/src/main/java/com/miekir/eden/base/ApiService.java

@@ -119,4 +119,8 @@ public interface ApiService {
     /**设置VIP*/
     @POST("/eden/api/setVip")
     Observable<BaseResponse<String>> setVip(@Query("email") String email);
+
+    /**获取下载文件需要的密钥*/
+    @POST("/eden/api/getTorrentSecret")
+    Observable<BaseResponse<String>> getTorrentSecret(@Body Map<String, Object> body);
 }

+ 15 - 0
app/src/main/java/com/miekir/eden/ui/home/goods/detail/GoodsDetailActivity.java

@@ -13,8 +13,10 @@ import androidx.recyclerview.widget.LinearLayoutManager;
 import androidx.recyclerview.widget.RecyclerView;
 
 import com.miekir.common.utils.ToastTool;
+import com.miekir.eden.BuildConfig;
 import com.miekir.eden.R;
 import com.miekir.eden.base.BaseBeiActivity;
+import com.miekir.eden.tool.SystemTool;
 import com.miekir.eden.ui.home.goods.GoodsBean;
 import com.miekir.eden.ui.home.goods.MagnetBean;
 import com.miekir.eden.ui.mine.fav.FavPresenter;
@@ -120,6 +122,7 @@ public class GoodsDetailActivity extends BaseBeiActivity implements View.OnClick
     protected void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         seePresenter.seeGoods(mGoodsBean.id);
+        mMagnetAdapter.setSeePresenter(seePresenter);
     }
 
     @Override
@@ -187,4 +190,16 @@ public class GoodsDetailActivity extends BaseBeiActivity implements View.OnClick
     public void onSeeResult(boolean success, String result) {
 
     }
+
+    @Override
+    public void onGetTorrentSecretResult(boolean success, String result) {
+        dismissLoading();
+        if (!success || TextUtils.isEmpty(result)) {
+            ToastTool.showShort("获取下载地址失败");
+            return;
+        }
+
+        ToastTool.showShort("已复制资源链接");
+        SystemTool.copyText(this, BuildConfig.BASE_URL+"eden/api/torrent?s="+result);
+    }
 }

+ 1 - 0
app/src/main/java/com/miekir/eden/ui/home/goods/detail/ISeeView.java

@@ -10,4 +10,5 @@ import com.miekir.mvp.view.IView;
  */
 public interface ISeeView extends IView {
     void onSeeResult(boolean success, String result);
+    void onGetTorrentSecretResult(boolean success, String result);
 }

+ 12 - 6
app/src/main/java/com/miekir/eden/ui/home/goods/detail/MagnetAdapter.java

@@ -8,10 +8,8 @@ import androidx.annotation.Nullable;
 
 import com.chad.library.adapter.base.BaseQuickAdapter;
 import com.chad.library.adapter.base.BaseViewHolder;
-import com.miekir.common.utils.ToastTool;
-import com.miekir.eden.BuildConfig;
 import com.miekir.eden.R;
-import com.miekir.eden.tool.SystemTool;
+import com.miekir.eden.base.BaseBeiActivity;
 import com.miekir.eden.ui.home.goods.MagnetBean;
 
 import java.util.List;
@@ -24,6 +22,8 @@ import java.util.List;
  * Description: 详情图片适配器
  */
 public class MagnetAdapter extends BaseQuickAdapter<MagnetBean, BaseViewHolder> {
+    private SeePresenter seePresenter;
+
     private Context mContext;
     public MagnetAdapter(Context context, @Nullable List<MagnetBean> data) {
         super(R.layout.item_goods_detail_magnet, data);
@@ -35,10 +35,16 @@ public class MagnetAdapter extends BaseQuickAdapter<MagnetBean, BaseViewHolder>
         TextView tv_detail_magnet = helper.getView(R.id.tv_detail_magnet);
         tv_detail_magnet.setText(magnetBean.text  + "(点击复制)");
 
-        String realUrl = magnetBean.url.startsWith("http") ? magnetBean.url : BuildConfig.HOST_STATIC_RESOURCE+magnetBean.url;
+        //String realUrl = magnetBean.url.startsWith("http") ? magnetBean.url : BuildConfig.HOST_STATIC_RESOURCE+magnetBean.url;
         tv_detail_magnet.setOnClickListener(v -> {
-            SystemTool.copyText(mContext, realUrl);
-            ToastTool.showShort("已复制资源链接");
+            if (mContext instanceof BaseBeiActivity) {
+                ((BaseBeiActivity) mContext).showLoading();
+            }
+            seePresenter.getTorrentSecret(magnetBean.url);
         });
     }
+
+    public void setSeePresenter(SeePresenter seePresenter) {
+        this.seePresenter = seePresenter;
+    }
 }

+ 39 - 0
app/src/main/java/com/miekir/eden/ui/home/goods/detail/SeePresenter.java

@@ -1,10 +1,15 @@
 package com.miekir.eden.ui.home.goods.detail;
 
+import android.text.TextUtils;
+
 import com.miekir.eden.base.ApiService;
 import com.miekir.eden.net.RetrofitHelper;
 import com.miekir.mvp.presenter.BasePresenter;
 import com.miekir.network.core.base.BaseObserver;
 
+import java.util.HashMap;
+import java.util.Map;
+
 import io.reactivex.android.schedulers.AndroidSchedulers;
 import io.reactivex.schedulers.Schedulers;
 
@@ -42,4 +47,38 @@ public class SeePresenter extends BasePresenter<ISeeView> {
                     }
                 });
     }
+
+    public void getTorrentSecret(String fileName) {
+        if (TextUtils.isEmpty(fileName)) {
+            getView().onGetTorrentSecretResult(false, "获取下载地址失败");
+            return;
+        }
+
+        String realFileName = fileName;
+        if (fileName.startsWith("torrent")) {
+            realFileName = fileName.substring("torrent".length());
+        }
+        Map<String, Object> map = new HashMap<>();
+        map.put("fileName", realFileName);
+        RetrofitHelper.getInstance()
+                .getRequestApi(ApiService.class)
+                .getTorrentSecret(map)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new BaseObserver<String>() {
+                    @Override
+                    public void onSuccess(String result) {
+                        if (getView() != null) {
+                            getView().onGetTorrentSecretResult(true, result);
+                        }
+                    }
+
+                    @Override
+                    public void onFailure(Throwable e, String errMsg) {
+                        if (getView() != null) {
+                            getView().onGetTorrentSecretResult(false, TextUtils.isEmpty(errMsg) ? "获取下载地址失败" : errMsg);
+                        }
+                    }
+                });
+    }
 }