mirror of
https://github.com/iv-org/invidious.git
synced 2024-11-26 15:37:23 +00:00
Add History API
This commit is contained in:
parent
b287ff2126
commit
7b124eec64
@ -54,6 +54,56 @@ module Invidious::Routes::API::V1::Authenticated
|
|||||||
env.response.status_code = 204
|
env.response.status_code = 204
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self.get_history(env)
|
||||||
|
env.response.content_type = "application/json"
|
||||||
|
user = env.get("user").as(User)
|
||||||
|
|
||||||
|
page = env.params.query["page"]?.try &.to_i?
|
||||||
|
page ||= 1
|
||||||
|
|
||||||
|
max_results = env.params.query["max_results"]?.try &.to_i?.try &.clamp(0, MAX_ITEMS_PER_PAGE)
|
||||||
|
max_results ||= user.preferences.max_results
|
||||||
|
max_results ||= CONFIG.default_user_preferences.max_results
|
||||||
|
|
||||||
|
if user.watched[(page - 1) * max_results]?
|
||||||
|
watched = user.watched.reverse[(page - 1) * max_results, max_results]
|
||||||
|
end
|
||||||
|
watched ||= [] of String
|
||||||
|
|
||||||
|
return watched.to_json
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.mark_watched(env)
|
||||||
|
user = env.get("user").as(User)
|
||||||
|
|
||||||
|
id = env.params.url["id"]?.try &.as(String)
|
||||||
|
if !id
|
||||||
|
return error_json(400, "Invalid video id.")
|
||||||
|
end
|
||||||
|
|
||||||
|
Invidious::Database::Users.mark_watched(user, id)
|
||||||
|
env.response.status_code = 204
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.mark_unwatched(env)
|
||||||
|
user = env.get("user").as(User)
|
||||||
|
|
||||||
|
id = env.params.url["id"]?.try &.as(String)
|
||||||
|
if !id
|
||||||
|
return error_json(400, "Invalid video id.")
|
||||||
|
end
|
||||||
|
|
||||||
|
Invidious::Database::Users.mark_unwatched(user, id)
|
||||||
|
env.response.status_code = 204
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.clear_history(env)
|
||||||
|
user = env.get("user").as(User)
|
||||||
|
|
||||||
|
Invidious::Database::Users.clear_watch_history(user)
|
||||||
|
env.response.status_code = 204
|
||||||
|
end
|
||||||
|
|
||||||
def self.feed(env)
|
def self.feed(env)
|
||||||
env.response.content_type = "application/json"
|
env.response.content_type = "application/json"
|
||||||
|
|
||||||
|
@ -257,6 +257,11 @@ module Invidious::Routing
|
|||||||
get "/api/v1/auth/export/invidious", {{namespace}}::Authenticated, :export_invidious
|
get "/api/v1/auth/export/invidious", {{namespace}}::Authenticated, :export_invidious
|
||||||
post "/api/v1/auth/import/invidious", {{namespace}}::Authenticated, :import_invidious
|
post "/api/v1/auth/import/invidious", {{namespace}}::Authenticated, :import_invidious
|
||||||
|
|
||||||
|
get "/api/v1/auth/history", {{namespace}}::Authenticated, :get_history
|
||||||
|
post "/api/v1/auth/history/:id", {{namespace}}::Authenticated, :mark_watched
|
||||||
|
delete "/api/v1/auth/history/:id", {{namespace}}::Authenticated, :mark_unwatched
|
||||||
|
delete "/api/v1/auth/history", {{namespace}}::Authenticated, :clear_history
|
||||||
|
|
||||||
get "/api/v1/auth/feed", {{namespace}}::Authenticated, :feed
|
get "/api/v1/auth/feed", {{namespace}}::Authenticated, :feed
|
||||||
|
|
||||||
get "/api/v1/auth/subscriptions", {{namespace}}::Authenticated, :get_subscriptions
|
get "/api/v1/auth/subscriptions", {{namespace}}::Authenticated, :get_subscriptions
|
||||||
|
Loading…
Reference in New Issue
Block a user