add google pubsub integration
This commit is contained in:
1
Gemfile
1
Gemfile
@@ -54,6 +54,7 @@ gem 'aws-sdk', '~> 2'
|
|||||||
gem 'responders'
|
gem 'responders'
|
||||||
gem 'highline'
|
gem 'highline'
|
||||||
gem 'dtext_rb', :git => "https://github.com/r888888888/dtext_rb.git", :require => "dtext"
|
gem 'dtext_rb', :git => "https://github.com/r888888888/dtext_rb.git", :require => "dtext"
|
||||||
|
gem 'google-api-client'
|
||||||
|
|
||||||
# needed for looser jpeg header compat
|
# needed for looser jpeg header compat
|
||||||
gem 'ruby-imagespec', :require => "image_spec", :git => "https://github.com/r888888888/ruby-imagespec.git", :branch => "exif-fixes"
|
gem 'ruby-imagespec', :require => "image_spec", :git => "https://github.com/r888888888/ruby-imagespec.git", :branch => "exif-fixes"
|
||||||
|
|||||||
36
Gemfile.lock
36
Gemfile.lock
@@ -138,6 +138,24 @@ GEM
|
|||||||
oauth2 (~> 1.0.0)
|
oauth2 (~> 1.0.0)
|
||||||
globalid (0.3.6)
|
globalid (0.3.6)
|
||||||
activesupport (>= 4.1.0)
|
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)
|
hashie (3.4.4)
|
||||||
highline (1.7.8)
|
highline (1.7.8)
|
||||||
hike (1.2.3)
|
hike (1.2.3)
|
||||||
@@ -146,6 +164,8 @@ GEM
|
|||||||
http-cookie (1.0.2)
|
http-cookie (1.0.2)
|
||||||
domain_name (~> 0.5)
|
domain_name (~> 0.5)
|
||||||
http_parser.rb (0.6.0)
|
http_parser.rb (0.6.0)
|
||||||
|
httpclient (2.8.0)
|
||||||
|
hurley (0.2)
|
||||||
i18n (0.7.0)
|
i18n (0.7.0)
|
||||||
jeweler (2.1.1)
|
jeweler (2.1.1)
|
||||||
builder
|
builder
|
||||||
@@ -163,6 +183,10 @@ GEM
|
|||||||
jwt (1.5.4)
|
jwt (1.5.4)
|
||||||
kgio (2.9.3)
|
kgio (2.9.3)
|
||||||
libv8 (3.16.14.11)
|
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)
|
loofah (2.0.3)
|
||||||
nokogiri (>= 1.5.9)
|
nokogiri (>= 1.5.9)
|
||||||
mail (2.6.3)
|
mail (2.6.3)
|
||||||
@@ -177,6 +201,7 @@ GEM
|
|||||||
ntlm-http (~> 0.1, >= 0.1.1)
|
ntlm-http (~> 0.1, >= 0.1.1)
|
||||||
webrobots (>= 0.0.9, < 0.2)
|
webrobots (>= 0.0.9, < 0.2)
|
||||||
memcache-client (1.8.5)
|
memcache-client (1.8.5)
|
||||||
|
memoist (0.14.0)
|
||||||
memoizable (0.4.2)
|
memoizable (0.4.2)
|
||||||
thread_safe (~> 0.3, >= 0.3.1)
|
thread_safe (~> 0.3, >= 0.3.1)
|
||||||
metaclass (0.0.4)
|
metaclass (0.0.4)
|
||||||
@@ -214,6 +239,7 @@ GEM
|
|||||||
multi_json (~> 1.3)
|
multi_json (~> 1.3)
|
||||||
multi_xml (~> 0.5)
|
multi_xml (~> 0.5)
|
||||||
rack (~> 1.2)
|
rack (~> 1.2)
|
||||||
|
os (0.9.6)
|
||||||
pg (0.18.2)
|
pg (0.18.2)
|
||||||
pg (0.18.2-x64-mingw32)
|
pg (0.18.2-x64-mingw32)
|
||||||
pkg-config (1.1.7)
|
pkg-config (1.1.7)
|
||||||
@@ -263,6 +289,8 @@ GEM
|
|||||||
rdoc (4.2.2)
|
rdoc (4.2.2)
|
||||||
json (~> 1.4)
|
json (~> 1.4)
|
||||||
ref (2.0.0)
|
ref (2.0.0)
|
||||||
|
representable (2.3.0)
|
||||||
|
uber (~> 0.0.7)
|
||||||
responders (2.1.0)
|
responders (2.1.0)
|
||||||
railties (>= 4.2.0, < 5)
|
railties (>= 4.2.0, < 5)
|
||||||
rest-client (1.8.0)
|
rest-client (1.8.0)
|
||||||
@@ -274,6 +302,7 @@ GEM
|
|||||||
http-cookie (>= 1.0.2, < 2.0)
|
http-cookie (>= 1.0.2, < 2.0)
|
||||||
mime-types (>= 1.16, < 3.0)
|
mime-types (>= 1.16, < 3.0)
|
||||||
netrc (~> 0.7)
|
netrc (~> 0.7)
|
||||||
|
retriable (2.1.0)
|
||||||
rmagick (2.15.4)
|
rmagick (2.15.4)
|
||||||
ruby-prof (0.15.8)
|
ruby-prof (0.15.8)
|
||||||
rubyzip (1.1.7)
|
rubyzip (1.1.7)
|
||||||
@@ -295,6 +324,11 @@ GEM
|
|||||||
shoulda-context (1.2.1)
|
shoulda-context (1.2.1)
|
||||||
shoulda-matchers (2.8.0)
|
shoulda-matchers (2.8.0)
|
||||||
activesupport (>= 3.0.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)
|
simple_form (3.1.0)
|
||||||
actionpack (~> 4.0)
|
actionpack (~> 4.0)
|
||||||
activemodel (~> 4.0)
|
activemodel (~> 4.0)
|
||||||
@@ -348,6 +382,7 @@ GEM
|
|||||||
thread_safe (~> 0.1)
|
thread_safe (~> 0.1)
|
||||||
tzinfo-data (1.2015.6)
|
tzinfo-data (1.2015.6)
|
||||||
tzinfo (>= 1.0.0)
|
tzinfo (>= 1.0.0)
|
||||||
|
uber (0.0.15)
|
||||||
uglifier (2.7.1)
|
uglifier (2.7.1)
|
||||||
execjs (>= 0.3.0)
|
execjs (>= 0.3.0)
|
||||||
json (>= 1.8.0)
|
json (>= 1.8.0)
|
||||||
@@ -392,6 +427,7 @@ DEPENDENCIES
|
|||||||
factory_girl
|
factory_girl
|
||||||
ffaker
|
ffaker
|
||||||
gctools
|
gctools
|
||||||
|
google-api-client
|
||||||
highline
|
highline
|
||||||
kgio
|
kgio
|
||||||
mechanize
|
mechanize
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
require 'danbooru/has_bit_flags'
|
require 'danbooru/has_bit_flags'
|
||||||
|
require 'google/apis/pubsub_v1'
|
||||||
|
|
||||||
class Post < ActiveRecord::Base
|
class Post < ActiveRecord::Base
|
||||||
class ApprovalError < Exception ; end
|
class ApprovalError < Exception ; end
|
||||||
@@ -14,7 +15,7 @@ class Post < ActiveRecord::Base
|
|||||||
after_save :apply_post_metatags
|
after_save :apply_post_metatags
|
||||||
after_save :expire_essential_tag_string_cache
|
after_save :expire_essential_tag_string_cache
|
||||||
after_create :update_iqdb_async
|
after_create :update_iqdb_async
|
||||||
after_commit :pg_notify
|
after_commit :notify_pubsub
|
||||||
before_save :merge_old_changes
|
before_save :merge_old_changes
|
||||||
before_save :normalize_tags
|
before_save :normalize_tags
|
||||||
before_save :update_tag_post_counts
|
before_save :update_tag_post_counts
|
||||||
@@ -1373,8 +1374,16 @@ class Post < ActiveRecord::Base
|
|||||||
save!
|
save!
|
||||||
end
|
end
|
||||||
|
|
||||||
def pg_notify
|
def notify_pubsub
|
||||||
execute_sql("notify changes_posts, '#{id}'")
|
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
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -1744,13 +1753,13 @@ class Post < ActiveRecord::Base
|
|||||||
|
|
||||||
def update_column(name, value)
|
def update_column(name, value)
|
||||||
ret = super(name, value)
|
ret = super(name, value)
|
||||||
pg_notify
|
notify_pubsub
|
||||||
ret
|
ret
|
||||||
end
|
end
|
||||||
|
|
||||||
def update_columns(attributes)
|
def update_columns(attributes)
|
||||||
ret = super(attributes)
|
ret = super(attributes)
|
||||||
pg_notify
|
notify_pubsub
|
||||||
ret
|
ret
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -417,6 +417,10 @@ module Danbooru
|
|||||||
def listbooru_auth_key
|
def listbooru_auth_key
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# google api options
|
||||||
|
def google_api_project
|
||||||
|
end
|
||||||
|
|
||||||
# AWS config options
|
# AWS config options
|
||||||
def aws_access_key_id
|
def aws_access_key_id
|
||||||
nil
|
nil
|
||||||
|
|||||||
Reference in New Issue
Block a user