Subscription management API endpoints

This commit is contained in:
Alex Ling 2021-11-20 09:47:18 +00:00
parent 352236ab65
commit 5442d124af
3 changed files with 38 additions and 3 deletions

View File

@ -378,7 +378,7 @@ const component = () => {
}, },
subscribe(modal) { subscribe(modal) {
this.subscribing = true; this.subscribing = true;
fetch(`${base_url}api/admin/plugin/subscribe`, { fetch(`${base_url}api/admin/plugin/subscriptions`, {
method: "POST", method: "POST",
body: JSON.stringify({ body: JSON.stringify({
filters: this.filterSettings, filters: this.filterSettings,

View File

@ -145,7 +145,7 @@ class Plugin
def unsubscribe(id : String) def unsubscribe(id : String)
list = SubscriptionList.new info.dir list = SubscriptionList.new info.dir
list.reject &.id.== id list.reject! &.id.== id
list.save list.save
end end

View File

@ -626,7 +626,7 @@ struct APIRouter
end end
end end
post "/api/admin/plugin/subscribe" do |env| post "/api/admin/plugin/subscriptions" do |env|
begin begin
plugin_id = env.params.json["plugin"].as String plugin_id = env.params.json["plugin"].as String
filters = env.params.json["filters"].as(Array(JSON::Any)).map do |f| filters = env.params.json["filters"].as(Array(JSON::Any)).map do |f|
@ -652,6 +652,41 @@ struct APIRouter
end end
end end
get "/api/admin/plugin/subscriptions" do |env|
begin
pid = env.params.query["plugin"].as String
send_json env, {
"success" => true,
"subscriptions" => Plugin.new(pid).list_subscriptions,
}.to_json
rescue e
Logger.error e
send_json env, {
"success" => false,
"error" => e.message,
}.to_json
end
end
delete "/api/admin/plugin/subscriptions" do |env|
begin
pid = env.params.query["plugin"].as String
sid = env.params.query["subscription"].as String
Plugin.new(pid).unsubscribe sid
send_json env, {
"success" => true,
}.to_json
rescue e
Logger.error e
send_json env, {
"success" => false,
"error" => e.message,
}.to_json
end
end
Koa.describe "Lists the chapters in a title from a plugin" Koa.describe "Lists the chapters in a title from a plugin"
Koa.tags ["admin", "downloader"] Koa.tags ["admin", "downloader"]
Koa.query "plugin", schema: String Koa.query "plugin", schema: String