mirror of
				https://github.com/iv-org/invidious.git
				synced 2025-10-31 04:32:02 +00:00 
			
		
		
		
	Add '/api/v1/auth/subscriptions'
This commit is contained in:
		| @@ -1712,7 +1712,14 @@ get "/subscription_manager" do |env| | ||||
|   format = env.params.query["format"]? | ||||
|   format ||= "rss" | ||||
|  | ||||
|   subscriptions = PG_DB.query_all("SELECT * FROM channels WHERE id = ANY('{#{user.subscriptions.join(",")}}')", as: InvidiousChannel) | ||||
|   if user.subscriptions.empty? | ||||
|     values = "'{}'" | ||||
|   else | ||||
|     values = "VALUES #{user.subscriptions.map { |id| %(('#{id}')) }.join(",")}" | ||||
|   end | ||||
|  | ||||
|   subscriptions = PG_DB.query_all("SELECT * FROM channels WHERE id = ANY(#{values})", as: InvidiousChannel) | ||||
|  | ||||
|   subscriptions.sort_by! { |channel| channel.author.downcase } | ||||
|  | ||||
|   if action_takeout | ||||
| @@ -4263,20 +4270,54 @@ end | ||||
| # ... | ||||
| # end | ||||
|  | ||||
| # TODO | ||||
| # get "/api/v1/auth/subscriptions" do |env| | ||||
| # ... | ||||
| # end | ||||
| get "/api/v1/auth/subscriptions" do |env| | ||||
|   env.response.content_type = "application/json" | ||||
|   user = env.get("user").as(User) | ||||
|  | ||||
| # TODO | ||||
| # post "/api/v1/auth/subscriptions/:ucid" do |env| | ||||
| # ... | ||||
| # end | ||||
|   if user.subscriptions.empty? | ||||
|     values = "'{}'" | ||||
|   else | ||||
|     values = "VALUES #{user.subscriptions.map { |id| %(('#{id}')) }.join(",")}" | ||||
|   end | ||||
|  | ||||
| # TODO | ||||
| # delete "/api/v1/auth/subscriptions/:ucid" do |env| | ||||
| # ... | ||||
| # end | ||||
|   subscriptions = PG_DB.query_all("SELECT * FROM channels WHERE id = ANY(#{values})", as: InvidiousChannel) | ||||
|  | ||||
|   JSON.build do |json| | ||||
|     json.array do | ||||
|       subscriptions.each do |subscription| | ||||
|         json.object do | ||||
|           json.field "author", subscription.author | ||||
|           json.field "authorId", subscription.id | ||||
|         end | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| end | ||||
|  | ||||
| post "/api/v1/auth/subscriptions/:ucid" do |env| | ||||
|   env.response.content_type = "application/json" | ||||
|   user = env.get("user").as(User) | ||||
|  | ||||
|   ucid = env.params.url["ucid"] | ||||
|  | ||||
|   if !user.subscriptions.includes? ucid | ||||
|     get_channel(ucid, PG_DB, false, false) | ||||
|     PG_DB.exec("UPDATE users SET subscriptions = array_append(subscriptions,$1) WHERE email = $2", ucid, user.email) | ||||
|   end | ||||
|  | ||||
|   env.response.status_code = 204 | ||||
| end | ||||
|  | ||||
| delete "/api/v1/auth/subscriptions/:ucid" do |env| | ||||
|   env.response.content_type = "application/json" | ||||
|   user = env.get("user").as(User) | ||||
|  | ||||
|   ucid = env.params.url["ucid"] | ||||
|  | ||||
|   PG_DB.exec("UPDATE users SET subscriptions = array_remove(subscriptions,$1) WHERE email = $2", ucid, user.email) | ||||
|  | ||||
|   env.response.status_code = 204 | ||||
| end | ||||
|  | ||||
| get "/api/v1/auth/tokens" do |env| | ||||
|   env.response.content_type = "application/json" | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Omar Roth
					Omar Roth