From b64c3293974084724a37f2627e14011e572a5b15 Mon Sep 17 00:00:00 2001 From: r888888888 Date: Fri, 23 Oct 2015 16:49:51 -0700 Subject: [PATCH] hook in listbooru #2523 --- app/models/saved_search.rb | 17 +++++++++++++++++ app/models/tag_subscription.rb | 23 +++++++++++++++++++++++ config/danbooru_default_config.rb | 8 ++++++++ 3 files changed, 48 insertions(+) diff --git a/app/models/saved_search.rb b/app/models/saved_search.rb index 7914a022c..b53b26d4d 100644 --- a/app/models/saved_search.rb +++ b/app/models/saved_search.rb @@ -5,6 +5,8 @@ class SavedSearch < ActiveRecord::Base attr_accessible :tag_query, :category before_create :update_user_on_create after_destroy :update_user_on_destroy + before_create :update_listbooru_on_create + after_destroy :update_listbooru_on_destroy validates_uniqueness_of :tag_query, :scope => :user_id before_validation :normalize @@ -37,4 +39,19 @@ class SavedSearch < ActiveRecord::Base user.update_attribute(:has_saved_searches, false) end end + + def update_listbooru_on_create + return unless Danbooru.config.listbooru_auth_key + Net::HTTP.post_form(Danbooru.config.listbooru_server, {"user_id" => user_id, "query" => tag_query, "key" => Danbooru.config.listbooru_auth_key}) + end + + def update_listbooru_on_destroy + return unless Danbooru.config.listbooru_auth_key + uri = URI.parse(Danbooru.config.listbooru_server) + Net::HTTP.start(uri.host, uri.port) do |http| + req = Net::HTTP::Delete.new("/searches") + req.set_form_data("user_id" => user_id, "query" => tag_query, "key" => Danbooru.config.listbooru_auth_key) + http.request(req) + end + end end diff --git a/app/models/tag_subscription.rb b/app/models/tag_subscription.rb index 76f81837d..465786d7c 100644 --- a/app/models/tag_subscription.rb +++ b/app/models/tag_subscription.rb @@ -4,6 +4,9 @@ class TagSubscription < ActiveRecord::Base before_validation :initialize_post_ids, :on => :create before_save :normalize_name before_save :limit_tag_count + before_create :update_listbooru_on_create + before_update :update_listbooru_on_update + after_destroy :update_listbooru_on_destroy attr_accessible :name, :tag_query, :post_ids, :is_public, :is_visible_on_profile validates_presence_of :name, :tag_query, :creator_id validate :validate_number_of_queries @@ -75,6 +78,26 @@ class TagSubscription < ActiveRecord::Base post_ids.split(/,/) end + def update_listbooru_on_create + return unless Danbooru.config.listbooru_auth_key + Net::HTTP.post_form(Danbooru.config.listbooru_server, {"user_id" => user_id, "query" => tag_query, "name" => "sub:#{id}", "key" => Danbooru.config.listbooru_auth_key}) + end + + def update_listbooru_on_update + update_listbooru_on_destroy + update_listbooru_on_create + end + + def update_listbooru_on_destroy + return unless Danbooru.config.listbooru_auth_key + uri = URI.parse(Danbooru.config.listbooru_server) + Net::HTTP.start(uri.host, uri.port) do |http| + req = Net::HTTP::Delete.new("/searches") + req.set_form_data("user_id" => user_id, "query" => tag_query, "key" => Danbooru.config.listbooru_auth_key, "name" => "sub:#{id}") + http.request(req) + end + end + module SearchMethods def visible_to(user) where("(is_public = TRUE OR creator_id = ? OR ?)", user.id, user.is_moderator?) diff --git a/config/danbooru_default_config.rb b/config/danbooru_default_config.rb index 01268e53b..0ed1dba3a 100644 --- a/config/danbooru_default_config.rb +++ b/config/danbooru_default_config.rb @@ -404,5 +404,13 @@ module Danbooru def addthis_key nil end + + def listbooru_server + "http://miura.donmai.us" + end + + def listbooru_auth_key + ENV["LISTBOORU_AUTH_KEY"] + end end end