diff --git a/app/models/post.rb b/app/models/post.rb index b0d431f8c81a492d52e512a4b268808990b5f721..a7252007401aa531525ed5ca058506c9a7001c27 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -1,4 +1,5 @@ class Post + require 'lib/common' require 'lib/message_handler' @@ -7,6 +8,7 @@ class Post include Mongoid::Document include Mongoid::Timestamps include ROXML + include Diaspora::Hookey xml_accessor :owner xml_accessor :snippet @@ -17,32 +19,6 @@ class Post field :snippet before_create :set_defaults - #after_update :notify_friends - after_save :notify_friends - - @@queue = MessageHandler.new - - def notify_friends - puts "hello" - - xml = prep_webhook - #friends_with_permissions.each{ |friend| puts friend; Curl.post( "\"" + xml + "\" " + friend) } - @@queue.add_post_request( friends_with_permissions, xml ) - @@queue.process - end - - def prep_webhook - self.to_xml.to_s.chomp - end - - def friends_with_permissions - #friends = Friend.only(:url).map{|x| x = x.url + "/receive/"} - #3.times {friends = friends + friends} - #friends - googles = [] - 100.times{ googles <<"http://google.com/"} #"http://localhost:4567/receive/"} #"http://google.com/"} - googles - end @@models = ["StatusMessage", "Bookmark", "Blog"] @@ -65,7 +41,5 @@ class Post self.source ||= user_email self.snippet ||= user_email end - - end diff --git a/lib/common.rb b/lib/common.rb index db57b295827970d8fbe285e9efb8bced2ae85716..942f476fb5d6a86e303e416a4a294098ba786851 100644 --- a/lib/common.rb +++ b/lib/common.rb @@ -22,14 +22,12 @@ module Diaspora def self.included(klass) klass.class_eval do - include EventQueue::MessageHandler before_save :notify_friends + + @@queue = MessageHandler.new def notify_friends - puts "hello" - xml = prep_webhook - #friends_with_permissions.each{ |friend| puts friend; Curl.post( "\"" + xml + "\" " + friend) } @@queue.add_post_request( friends_with_permissions, xml ) @@queue.process end @@ -39,10 +37,7 @@ module Diaspora end def friends_with_permissions - #Friend.only(:url).map{|x| x = x.url + "/receive/"} - #googles = [] - #5.times{ googles <<"http://google.com/"} #"http://localhost:4567/receive/"} #"http://google.com/"} - googles + Friend.only(:url).map{|x| x = x.url + "/receive/"} end end end diff --git a/lib/message_handler.rb b/lib/message_handler.rb index dba4083a9035a4a4bdf2ff181479157f850bf3bd..b5b49d5a0f3be82ded599ed56df4b4b4824b339e 100644 --- a/lib/message_handler.rb +++ b/lib/message_handler.rb @@ -5,63 +5,61 @@ require 'dm-core' require 'eventmachine' require 'em-http' +class MessageHandler + NUM_TRIES = 3 + TIMEOUT = 5 #seconds - class MessageHandler - - NUM_TRIES = 3 - TIMEOUT = 5 #seconds - - def initialize - @queue = EM::Queue.new - end + def initialize + @queue = EM::Queue.new + end - def add_get_request(destinations) - destinations.each{ |dest| @queue.push(Message.new(:get, dest))} - end + def add_get_request(destinations) + destinations.each{ |dest| @queue.push(Message.new(:get, dest))} + end - def add_post_request(destinations, body) - destinations.each{|dest| @queue.push(Message.new(:post, dest, body))} - end + def add_post_request(destinations, body) + destinations.each{|dest| @queue.push(Message.new(:post, dest, body))} + end - def process - @queue.pop{ |query| - case query.type - when :post - http = EventMachine::HttpRequest.new(query.destination).post :timeout => TIMEOUT, :body => query.body - http.callback {puts "YAR"; process} - when :get - http = EventMachine::HttpRequest.new(query.destination).get :timeout => TIMEOUT - http.callback {send_to_seed(query, http.response); process} - else - raise "message is not a type I know!" - end + def process + @queue.pop{ |query| + case query.type + when :post + http = EventMachine::HttpRequest.new(query.destination).post :timeout => TIMEOUT, :body => query.body + http.callback {puts "YAR"; process} + when :get + http = EventMachine::HttpRequest.new(query.destination).get :timeout => TIMEOUT + http.callback {send_to_seed(query, http.response); process} + else + raise "message is not a type I know!" + end - http.errback { - query.try_count +=1 - @queue.push query unless query.try_count >= NUM_TRIES - process - } - } unless @queue.size == 0 - end + http.errback { + query.try_count +=1 + @queue.push query unless query.try_count >= NUM_TRIES + process + } + } unless @queue.size == 0 + end - def send_to_seed(message, http_response) - #DO SOMETHING! - end + def send_to_seed(message, http_response) + #DO SOMETHING! + end - def size - @queue.size - end + def size + @queue.size + end - class Message - attr_accessor :type, :destination, :body, :try_count - def initialize(type, dest, body= nil) - @type = type - @destination = dest - @body = body - @try_count = 0 - end + class Message + attr_accessor :type, :destination, :body, :try_count + def initialize(type, dest, body= nil) + @type = type + @destination = dest + @body = body + @try_count = 0 end end +end