From 07e59776a65ec0d9b21f43bce72bfeaa9417c03e Mon Sep 17 00:00:00 2001 From: FongMi Date: Fri, 15 Dec 2023 17:16:51 +0800 Subject: [PATCH] Add cache api --- .../com/fongmi/android/tv/player/Source.java | 8 ++--- .../extractor/{Sniffer.java => Video.java} | 2 +- .../android/tv/server/process/Cache.java | 35 +++++++++++++++++++ 3 files changed, 40 insertions(+), 5 deletions(-) rename app/src/main/java/com/fongmi/android/tv/player/extractor/{Sniffer.java => Video.java} (88%) create mode 100644 app/src/main/java/com/fongmi/android/tv/server/process/Cache.java diff --git a/app/src/main/java/com/fongmi/android/tv/player/Source.java b/app/src/main/java/com/fongmi/android/tv/player/Source.java index 1c67441cf..d3853eb9b 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/Source.java +++ b/app/src/main/java/com/fongmi/android/tv/player/Source.java @@ -6,7 +6,7 @@ import com.fongmi.android.tv.player.extractor.BiliBili; import com.fongmi.android.tv.player.extractor.Force; import com.fongmi.android.tv.player.extractor.JianPian; import com.fongmi.android.tv.player.extractor.Push; -import com.fongmi.android.tv.player.extractor.Sniffer; +import com.fongmi.android.tv.player.extractor.Video; import com.fongmi.android.tv.player.extractor.TVBus; import com.fongmi.android.tv.player.extractor.Thunder; import com.fongmi.android.tv.player.extractor.Youtube; @@ -34,7 +34,7 @@ public class Source { extractors.add(new Force()); extractors.add(new JianPian()); extractors.add(new Push()); - extractors.add(new Sniffer()); + extractors.add(new Video()); extractors.add(new Thunder()); extractors.add(new TVBus()); extractors.add(new Youtube()); @@ -52,7 +52,7 @@ public class Source { String url = result.getUrl().v(); Extractor extractor = getExtractor(url); if (extractor != null) result.setParse(0); - if (extractor instanceof Sniffer) result.setParse(1); + if (extractor instanceof Video) result.setParse(1); return extractor == null ? url : extractor.fetch(url); } @@ -60,7 +60,7 @@ public class Source { String url = channel.getCurrent().split("\\$")[0]; Extractor extractor = getExtractor(url); if (extractor != null) channel.setParse(0); - if (extractor instanceof Sniffer) channel.setParse(1); + if (extractor instanceof Video) channel.setParse(1); return extractor == null ? url : extractor.fetch(url); } diff --git a/app/src/main/java/com/fongmi/android/tv/player/extractor/Sniffer.java b/app/src/main/java/com/fongmi/android/tv/player/extractor/Video.java similarity index 88% rename from app/src/main/java/com/fongmi/android/tv/player/extractor/Sniffer.java rename to app/src/main/java/com/fongmi/android/tv/player/extractor/Video.java index dd03be331..ef8d68af0 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/extractor/Sniffer.java +++ b/app/src/main/java/com/fongmi/android/tv/player/extractor/Video.java @@ -2,7 +2,7 @@ package com.fongmi.android.tv.player.extractor; import com.fongmi.android.tv.player.Source; -public class Sniffer implements Source.Extractor { +public class Video implements Source.Extractor { @Override public boolean match(String scheme, String host) { diff --git a/app/src/main/java/com/fongmi/android/tv/server/process/Cache.java b/app/src/main/java/com/fongmi/android/tv/server/process/Cache.java new file mode 100644 index 000000000..bbfdd640d --- /dev/null +++ b/app/src/main/java/com/fongmi/android/tv/server/process/Cache.java @@ -0,0 +1,35 @@ +package com.fongmi.android.tv.server.process; + +import com.fongmi.android.tv.server.Nano; +import com.github.catvod.utils.Prefers; + +import java.util.Map; +import java.util.Objects; + +import fi.iki.elonen.NanoHTTPD; + +public class Cache implements Process { + + @Override + public boolean isRequest(NanoHTTPD.IHTTPSession session, String path) { + return path.equals("/cache"); + } + + @Override + public NanoHTTPD.Response doResponse(NanoHTTPD.IHTTPSession session, String path, Map files) { + Map params = session.getParms(); + switch (Objects.requireNonNullElse(params.get("do"), "")) { + case "get": + Prefers.getString("cache_" + params.get("key")); + return Nano.success(); + case "set": + Prefers.put("cache_" + params.get("key"), params.get("value")); + return Nano.success(); + case "delete": + Prefers.remove("cache_" + params.get("key")); + return Nano.success(); + default: + return Nano.error(null); + } + } +}