diff --git a/Gemfile b/Gemfile index d36727342dba70a74e9dcc4aabbdc943c0587ade..fb8243e53805221f2a75d66c3e5de5ad84176148 100644 --- a/Gemfile +++ b/Gemfile @@ -32,7 +32,6 @@ group :test do gem 'autotest' gem 'factory_girl_rails' gem 'database_cleaner' - gem 'em-spec', :git => 'http://github.com/danielsdeleo/em-spec.git' end group :development do diff --git a/app/controllers/person_requests_controller.rb b/app/controllers/person_requests_controller.rb index 80430ad941eabc7a9ed7d21772706de9372f6d94..4dba011d05832b20ce5b9ed3e7dc8adaa27da8ba 100644 --- a/app/controllers/person_requests_controller.rb +++ b/app/controllers/person_requests_controller.rb @@ -24,10 +24,9 @@ class PersonRequestsController < ApplicationController end def create - @person_request = PersonRequest.new(params[:person_request]) - @person_request.sender = current_user + @person_request = PersonRequest.for(params[:person_request][:url]) - if @person_request.save + if true flash[:notice] = "Successfully created person request." redirect_to @person_request else diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index eb6a955784e22c5afa5ac0c4b47829194f69f0a4..1da4454c59f012eceddb406bc0bc54a1cc922193 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -4,4 +4,5 @@ class UsersController < ApplicationController def index @users = User.sort(:created_at.desc).all end + end diff --git a/lib/common.rb b/lib/common.rb index 2c117db58182b8b23456ad1708fd2061833f8e70..dcc773ab8b1996c15155fbdd7d28509431409d8c 100644 --- a/lib/common.rb +++ b/lib/common.rb @@ -56,8 +56,8 @@ module Diaspora module Webhooks def self.included(klass) klass.class_eval do - @@queue = MessageHandler.new - + @@queue = MessageHandler.instance + def notify_people if self.person_id == User.first.id push_to(people_with_permissions) @@ -76,9 +76,7 @@ module Diaspora def push_to_url(url) if url - puts "AHHHHHH, sending" xml = self.class.build_xml_for([self]) - puts xml @@queue.add_post_request( [url], xml ) @@queue.process end diff --git a/lib/message_handler.rb b/lib/message_handler.rb index ccd1456bc1e3a935c2d060c0664952dfc0e3eefc..b32926979da6a7b68693993de79b6d00deabfa12 100644 --- a/lib/message_handler.rb +++ b/lib/message_handler.rb @@ -1,4 +1,5 @@ class MessageHandler + include Singleton NUM_TRIES = 3 TIMEOUT = 5 #seconds @@ -7,6 +8,10 @@ class MessageHandler @queue = EM::Queue.new end + def clear + @queue = EM::Queue.new + end + def add_get_request(destinations) destinations.each{ |dest| @queue.push(Message.new(:get, dest))} end @@ -22,7 +27,7 @@ class MessageHandler case query.type when :post http = EventMachine::HttpRequest.new(query.destination).post :timeout => TIMEOUT, :body =>{:xml => query.body} - http.callback {process} + http.callback {puts "processing"; process} when :get http = EventMachine::HttpRequest.new(query.destination).get :timeout => TIMEOUT http.callback {send_to_seed(query, http.response); process} diff --git a/spec/lib/message_handler_spec.rb b/spec/lib/message_handler_spec.rb index 553135b9672e972ceed22abebe9c2e809d498412..88eda43de7f8ed3506a861a06f8b46e93b2c3073 100644 --- a/spec/lib/message_handler_spec.rb +++ b/spec/lib/message_handler_spec.rb @@ -2,12 +2,16 @@ require File.dirname(__FILE__) + '/../spec_helper' describe MessageHandler do before do - @handler = MessageHandler.new + @handler = MessageHandler.instance @message_body = "I want to pump you up" @message_urls = ["http://www.google.com/", "http://yahoo.com/", "http://foo.com/"] end + after do + @handler.clear + end + describe 'GET messages' do describe 'creating a GET query' do it 'should be able to add a GET query to the queue with required destinations' do diff --git a/spec/models/person_request_spec.rb b/spec/models/person_request_spec.rb index e23b5de6447b40e75eb84e3da3c47f8b9fb6b9e0..acf9528f3cbd86b782391a37a7cb3e7063900ebb 100644 --- a/spec/models/person_request_spec.rb +++ b/spec/models/person_request_spec.rb @@ -33,4 +33,9 @@ describe PersonRequest do Person.where(:url => person.url).first.active.should be true end + it "should send a person request to specified url" do + PersonRequest.send(:class_variable_get, :@@queue).should_receive(:add_post_request) + PersonRequest.for("http://google.com/") + end + end