diff --git a/app/models/person_request.rb b/app/models/person_request.rb
index d3c9562b9..e240216e1 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
- attr_accessor :sender
+ xml_accessor :_id
+ xml_accessor :person, :as => Person
+
+ 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 000000000..75603f405
--- /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 000000000..a90624c51
--- /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 000000000..b492c539c
--- /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 000000000..eba1b657b
--- /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 000000000..75a9bbd04
--- /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 000000000..71260d8e6
--- /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 000000000..207d347f1
--- /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 699f5f443..537c50c0e 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 = "
-
- #{self.to_person_xml.to_s}
-
- "
- @@queue.add_post_request( [url], xml )
- @@queue.process
- end
- end
-
def prep_webhook
"#{self.to_xml.to_s}"
end
diff --git a/spec/lib/parser_spec.rb b/spec/lib/parser_spec.rb
index 4bde168d2..95ed70894 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 = "
-
- #{person_request.to_person_xml.to_s}
-
- "
+ 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 = "
-
- #{person_request_remote.to_person_xml.to_s}
-
- "
+ 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 78b45b5f3..e23b5de64 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