add google pubsub integration

This commit is contained in:
r888888888
2016-07-27 17:20:48 -07:00
parent 804fa0cb26
commit 5cd1a34700
4 changed files with 55 additions and 5 deletions

View File

@@ -54,6 +54,7 @@ gem 'aws-sdk', '~> 2'
gem 'responders'
gem 'highline'
gem 'dtext_rb', :git => "https://github.com/r888888888/dtext_rb.git", :require => "dtext"
gem 'google-api-client'
# needed for looser jpeg header compat
gem 'ruby-imagespec', :require => "image_spec", :git => "https://github.com/r888888888/ruby-imagespec.git", :branch => "exif-fixes"

View File

@@ -138,6 +138,24 @@ GEM
oauth2 (~> 1.0.0)
globalid (0.3.6)
activesupport (>= 4.1.0)
google-api-client (0.9.9)
addressable (~> 2.3)
googleauth (~> 0.5)
httpclient (~> 2.7)
hurley (~> 0.1)
memoist (~> 0.11)
mime-types (>= 1.6)
representable (~> 2.3.0)
retriable (~> 2.0)
thor (~> 0.19)
googleauth (0.5.1)
faraday (~> 0.9)
jwt (~> 1.4)
logging (~> 2.0)
memoist (~> 0.12)
multi_json (~> 1.11)
os (~> 0.9)
signet (~> 0.7)
hashie (3.4.4)
highline (1.7.8)
hike (1.2.3)
@@ -146,6 +164,8 @@ GEM
http-cookie (1.0.2)
domain_name (~> 0.5)
http_parser.rb (0.6.0)
httpclient (2.8.0)
hurley (0.2)
i18n (0.7.0)
jeweler (2.1.1)
builder
@@ -163,6 +183,10 @@ GEM
jwt (1.5.4)
kgio (2.9.3)
libv8 (3.16.14.11)
little-plugger (1.1.4)
logging (2.1.0)
little-plugger (~> 1.1)
multi_json (~> 1.10)
loofah (2.0.3)
nokogiri (>= 1.5.9)
mail (2.6.3)
@@ -177,6 +201,7 @@ GEM
ntlm-http (~> 0.1, >= 0.1.1)
webrobots (>= 0.0.9, < 0.2)
memcache-client (1.8.5)
memoist (0.14.0)
memoizable (0.4.2)
thread_safe (~> 0.3, >= 0.3.1)
metaclass (0.0.4)
@@ -214,6 +239,7 @@ GEM
multi_json (~> 1.3)
multi_xml (~> 0.5)
rack (~> 1.2)
os (0.9.6)
pg (0.18.2)
pg (0.18.2-x64-mingw32)
pkg-config (1.1.7)
@@ -263,6 +289,8 @@ GEM
rdoc (4.2.2)
json (~> 1.4)
ref (2.0.0)
representable (2.3.0)
uber (~> 0.0.7)
responders (2.1.0)
railties (>= 4.2.0, < 5)
rest-client (1.8.0)
@@ -274,6 +302,7 @@ GEM
http-cookie (>= 1.0.2, < 2.0)
mime-types (>= 1.16, < 3.0)
netrc (~> 0.7)
retriable (2.1.0)
rmagick (2.15.4)
ruby-prof (0.15.8)
rubyzip (1.1.7)
@@ -295,6 +324,11 @@ GEM
shoulda-context (1.2.1)
shoulda-matchers (2.8.0)
activesupport (>= 3.0.0)
signet (0.7.2)
addressable (~> 2.3)
faraday (~> 0.9)
jwt (~> 1.5)
multi_json (~> 1.10)
simple_form (3.1.0)
actionpack (~> 4.0)
activemodel (~> 4.0)
@@ -348,6 +382,7 @@ GEM
thread_safe (~> 0.1)
tzinfo-data (1.2015.6)
tzinfo (>= 1.0.0)
uber (0.0.15)
uglifier (2.7.1)
execjs (>= 0.3.0)
json (>= 1.8.0)
@@ -392,6 +427,7 @@ DEPENDENCIES
factory_girl
ffaker
gctools
google-api-client
highline
kgio
mechanize

View File

@@ -1,4 +1,5 @@
require 'danbooru/has_bit_flags'
require 'google/apis/pubsub_v1'
class Post < ActiveRecord::Base
class ApprovalError < Exception ; end
@@ -14,7 +15,7 @@ class Post < ActiveRecord::Base
after_save :apply_post_metatags
after_save :expire_essential_tag_string_cache
after_create :update_iqdb_async
after_commit :pg_notify
after_commit :notify_pubsub
before_save :merge_old_changes
before_save :normalize_tags
before_save :update_tag_post_counts
@@ -1373,8 +1374,16 @@ class Post < ActiveRecord::Base
save!
end
def pg_notify
execute_sql("notify changes_posts, '#{id}'")
def notify_pubsub
return unless Danbooru.config.google_api_project
require 'google/apis/pubsub_v1'
pubsub = Google::Apis::PubsubV1::PubsubService.new
pubsub.authorization = Google::Auth.get_application_default([Google::Apis::PubsubV1::AUTH_PUBSUB])
topic = "projects/#{Danbooru.config.google_api_project}/topics/post_updates"
request = Google::Apis::PubsubV1::PublishRequest.new(messages: [])
request.messages << Google::Apis::PubsubV1::Message.new(data: id.to_s)
pubsub.publish_topic(topic, request)
end
end
@@ -1744,13 +1753,13 @@ class Post < ActiveRecord::Base
def update_column(name, value)
ret = super(name, value)
pg_notify
notify_pubsub
ret
end
def update_columns(attributes)
ret = super(attributes)
pg_notify
notify_pubsub
ret
end
end

View File

@@ -417,6 +417,10 @@ module Danbooru
def listbooru_auth_key
end
# google api options
def google_api_project
end
# AWS config options
def aws_access_key_id
nil