From 67535c1113d326b536335fa053d3e9d1b2845b37 Mon Sep 17 00:00:00 2001 From: Maxwell Salzberg Date: Thu, 17 Jun 2010 09:20:59 -0700 Subject: [PATCH] tried to git rid of error in em-http-request --- Gemfile | 2 +- app/models/post.rb | 7 +-- lib/common.rb | 21 +++------ lib/message_handler.rb | 100 ++++++++++++++++++++--------------------- 4 files changed, 59 insertions(+), 71 deletions(-) diff --git a/Gemfile b/Gemfile index acc67da92..ddc3e0013 100644 --- a/Gemfile +++ b/Gemfile @@ -3,7 +3,7 @@ source 'http://rubygems.org' gem 'rails', '3.0.0.beta4' gem 'mongrel' gem 'thin' -gem 'em-http-request' +gem 'em-http-request', :git => 'git@github.com:maxwell/em-http-request.git' gem 'addressable' gem "mongoid", :git => "http://github.com/durran/mongoid.git" gem "bson_ext", "1.0.1" diff --git a/app/models/post.rb b/app/models/post.rb index 6375cbe84..879147fcb 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -1,12 +1,14 @@ class Post require 'lib/common' - + require 'lib/message_handler' + + # XML accessors must always preceed mongo field tags include Mongoid::Document include Mongoid::Timestamps include ROXML - +@@queue = MessageHandler.new include Diaspora::Hookey xml_accessor :owner @@ -21,7 +23,6 @@ class Post #after_update :notify_friends - @@models = ["StatusMessage", "Bookmark", "Blog"] def self.recent_ordered_posts diff --git a/lib/common.rb b/lib/common.rb index 312d7f773..b31081d18 100644 --- a/lib/common.rb +++ b/lib/common.rb @@ -19,30 +19,19 @@ module Diaspora module Hookey -class Curl - def self.post(s) - `curl -X POST -d #{s}`;; - end - - def self.get(s) - `curl -X GET #{s}` - end -end - - def self.included(klass) klass.class_eval do - require 'lib/message_handler' + #include EventQueue::MessageHandler before_save :notify_friends def notify_friends - m = MessageHandler.new - + + @@queue = MessageHandler.new xml = prep_webhook #friends_with_permissions.each{ |friend| puts friend; Curl.post( "\"" + xml + "\" " + friend) } - m.add_post_request( friends_with_permissions, xml ) - m.process + @@queue.add_post_request( friends_with_permissions, xml ) + @@queue.process end def prep_webhook diff --git a/lib/message_handler.rb b/lib/message_handler.rb index 8ef7594fa..ff58f3583 100644 --- a/lib/message_handler.rb +++ b/lib/message_handler.rb @@ -4,61 +4,59 @@ class MessageHandler - - NUM_TRIES = 3 - TIMEOUT = 5 #seconds - - def initialize - @queue = EM::Queue.new - end + NUM_TRIES = 3 + TIMEOUT = 5 #seconds - def add_get_request(destinations) - destinations.each{ |dest| @queue.push(Message.new(:get, dest))} - 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_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 { 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!" + def process + @queue.pop{ |query| + case query.type + when :post + http = EventMachine::HttpRequest.new(query.destination).post :timeout => TIMEOUT, :body => query.body + http.callback { 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 + + + def send_to_seed(message, http_response) + #DO SOMETHING! + 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 - - 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 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 end -end -