diff --git a/app/models/person_request.rb b/app/models/person_request.rb index d3c9562b9798060be0a7e0a3404003fa5639d26c..e240216e146241d3d4576b8404b6363ba0bd35d7 100644 --- a/app/models/person_request.rb +++ b/app/models/person_request.rb @@ -1,30 +1,26 @@ class PersonRequest include MongoMapper::Document include Diaspora::Webhooks + include ROXML - key :url, String + xml_name :person_request + + xml_accessor :_id + xml_accessor :person, :as => Person - attr_accessor :sender + key :url, String + key :person, Person validates_presence_of :url before_save :check_for_person_requests - def to_person_xml - person = Person.new - person.email = sender.email - person.url = sender.url - person.profile = sender.profile.clone - - person.to_xml - end - def self.for(url) - person_request = PersonRequest.new(:url => url) - person_request.sender = User.first - person_request.save + request = PersonRequest.new(:url => url) + request.person = User.first + request.save - person_request.push_person_request_to_url(person_request.url) + request.push_to([request]) end def check_for_person_requests diff --git a/app/views/person_requests/_form.html.haml b/app/views/person_requests/_form.html.haml new file mode 100644 index 0000000000000000000000000000000000000000..75603f405132bf79aadf056df763f5c1a35dae15 --- /dev/null +++ b/app/views/person_requests/_form.html.haml @@ -0,0 +1,9 @@ += form_for @person_request do |f| + = f.error_messages + + %p + = f.label :url + = f.text_field :url + + %p + = f.submit diff --git a/app/views/person_requests/_new_person_request.haml b/app/views/person_requests/_new_person_request.haml new file mode 100644 index 0000000000000000000000000000000000000000..a90624c516690a0ea2df40ec98edb0b6e7a3224e --- /dev/null +++ b/app/views/person_requests/_new_person_request.haml @@ -0,0 +1,9 @@ += form_for @person_request, :remote => true do |f| + = f.error_messages + + %p + = f.label :url + = f.text_field :url + + %p + = f.submit diff --git a/app/views/person_requests/_person_request.html.haml b/app/views/person_requests/_person_request.html.haml new file mode 100644 index 0000000000000000000000000000000000000000..b492c539c9637495bf2ef87c8ebef67c3f8d12e2 --- /dev/null +++ b/app/views/person_requests/_person_request.html.haml @@ -0,0 +1,2 @@ +%li.message{:id => person_request.id} + = person_request.inspect diff --git a/app/views/person_requests/edit.html.haml b/app/views/person_requests/edit.html.haml new file mode 100644 index 0000000000000000000000000000000000000000..eba1b657bcfabe98461631a663e43245e4407e94 --- /dev/null +++ b/app/views/person_requests/edit.html.haml @@ -0,0 +1,8 @@ +- title "Edit Person Request" + += render 'form' + +%p + = link_to "Show", person_request_path(@person_request) + | + = link_to "View All", person_request_path diff --git a/app/views/person_requests/index.html.haml b/app/views/person_requests/index.html.haml new file mode 100644 index 0000000000000000000000000000000000000000..75a9bbd04a73921749f84e323e30272deb713d3c --- /dev/null +++ b/app/views/person_requests/index.html.haml @@ -0,0 +1,7 @@ +%h1 person requests += render "person_requests/new_person_request", :person_request => @person_request +%ul#stream + - for person_request in @person_requests + = render "person_request", :person_request => person_request +#pagination + = will_paginate @person_requests diff --git a/app/views/person_requests/new.html.haml b/app/views/person_requests/new.html.haml new file mode 100644 index 0000000000000000000000000000000000000000..71260d8e6ca1bee73af8fc045c9ad0be645c43e2 --- /dev/null +++ b/app/views/person_requests/new.html.haml @@ -0,0 +1,5 @@ +- title "New Person Request" + += render 'form' + +%p= link_to "Back to List", person_requests_path diff --git a/app/views/person_requests/show.html.haml b/app/views/person_requests/show.html.haml new file mode 100644 index 0000000000000000000000000000000000000000..207d347f1b03ec895c1b4840f6e310dcb689c27a --- /dev/null +++ b/app/views/person_requests/show.html.haml @@ -0,0 +1,11 @@ +- title "Person Request" + +%p + = person_request.inspect + +%p + = link_to "Edit", edit_person_request_path(@person_request) + | + = link_to "Destroy", @person_request, :confirm => 'Are you sure?', :method => :delete + | + = link_to "View All", person_requests_path diff --git a/lib/common.rb b/lib/common.rb index 699f5f4437d57ae76610de2b38d624e5884eed3c..537c50c0e6271ddcce75529e1ea01602f36bfe64 100644 --- a/lib/common.rb +++ b/lib/common.rb @@ -33,11 +33,12 @@ module Diaspora objects.each do |p| if p.is_a? Retraction p.perform - elsif p.is_a? Person + elsif p.is_a? PersonRequest if PersonRequest.where(:url => p.url).first p.active = true end p.save + p.person.save #This line checks if the sender was in the database, among other things? elsif p.respond_to?(:person) && !(p.person.nil?) && !(p.person.is_a? User) #WTF p.save @@ -68,19 +69,6 @@ module Diaspora end end - def push_person_request_to_url(url) - if url - url = url + "receive/" - xml = "<XML> - <posts><post> - #{self.to_person_xml.to_s} - </post></posts> - </XML>" - @@queue.add_post_request( [url], xml ) - @@queue.process - end - end - def prep_webhook "<post>#{self.to_xml.to_s}</post>" end diff --git a/spec/lib/parser_spec.rb b/spec/lib/parser_spec.rb index 4bde168d2fbfe279b1fbe3b849f9228cbdff1b72..95ed70894eace01b28f27ab1fbf6c8fd13b56f83 100644 --- a/spec/lib/parser_spec.rb +++ b/spec/lib/parser_spec.rb @@ -111,13 +111,10 @@ describe "parser in application helper" do end it "should create a new person upon getting a person request" do - person_request = PersonRequest.new(:url => "http://www.googles.com/") - person_request.sender = @person - xml = "<XML> - <posts><post> - #{person_request.to_person_xml.to_s} - </post></posts> - </XML>" + request = PersonRequest.new(:url => "http://www.googles.com/") + request.person = @person + + xml = Post.build_xml_for [request] @person.destroy @user.destroy @@ -127,22 +124,13 @@ describe "parser in application helper" do end it "should activate the Person if I initiated a request to that url" do - person_request = PersonRequest.create(:url => @person.url, :sender => @user) - - person_request_remote = PersonRequest.new(:url => "http://www.yahoo.com/") - person_request_remote.sender = @person.clone - xml = "<XML> - <posts><post> - #{person_request_remote.to_person_xml.to_s} - </post></posts> - </XML>" + request = PersonRequest.create(:url => @person.url, :person => @user) + request_remote = PersonRequest.new(:url => "http://www.yahoo.com/") + request_remote.person = @person.clone - @person.destroy - @user.destroy - Person.count.should be 0 - store_objects_from_xml(xml) - Person.count.should be 1 - Person.first.active.should be true + xml = Post.build_xml_for [request_remote] + + Person.where(:url => @person.url).first.active.should be true end end diff --git a/spec/models/person_request_spec.rb b/spec/models/person_request_spec.rb index 78b45b5f32e9f3eea610df610049278a5c00afeb..e23b5de6447b40e75eb84e3da3c47f8b9fb6b9e0 100644 --- a/spec/models/person_request_spec.rb +++ b/spec/models/person_request_spec.rb @@ -10,14 +10,14 @@ describe PersonRequest do end it 'should generate xml for the User as a Person' do - person_request = PersonRequest.new(:url => "http://www.google.com") user = Factory.create(:user) - person_request.sender = user - person_xml = person_request.to_person_xml.to_s - person_xml.include?(user.email).should be true - person_xml.include?(user.url).should be true - person_xml.include?(user.profile.first_name).should be true - person_xml.include?(user.profile.last_name).should be true + request = PersonRequest.new(:url => "http://www.google.com/", :person => user) + + xml = request.to_xml.to_s + xml.include?(user.email).should be true + xml.include?(user.url).should be true + xml.include?(user.profile.first_name).should be true + xml.include?(user.profile.last_name).should be true end it 'should be sent to the url upon for action' do