RS, DG; All saving moved to user
This commit is contained in:
parent
c6a620c7dd
commit
bee71c5a23
4 changed files with 17 additions and 28 deletions
|
|
@ -128,11 +128,17 @@ class User
|
||||||
object.perform
|
object.perform
|
||||||
|
|
||||||
elsif object.is_a? Request
|
elsif object.is_a? Request
|
||||||
|
person = get_or_create_person_object_from_xml( xml )
|
||||||
|
person.serialized_key ||= object.exported_key
|
||||||
|
object.person = person
|
||||||
|
object.person.save
|
||||||
|
object.save
|
||||||
receive_friend_request(object)
|
receive_friend_request(object)
|
||||||
|
|
||||||
elsif object.is_a? Profile
|
elsif object.is_a? Profile
|
||||||
object.save
|
person = Diaspora::Parser.parse_owner_id_from_xml xml
|
||||||
|
person.profile = object
|
||||||
|
person.save
|
||||||
elsif object.respond_to?(:person) && !(object.person.nil?) && !(object.person.is_a? User)
|
elsif object.respond_to?(:person) && !(object.person.nil?) && !(object.person.is_a? User)
|
||||||
Rails.logger.debug("Saving object with success: #{object.save}")
|
Rails.logger.debug("Saving object with success: #{object.save}")
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -1,22 +1,18 @@
|
||||||
module Diaspora
|
module Diaspora
|
||||||
module Parser
|
module Parser
|
||||||
def parse_owner_from_xml(xml)
|
|
||||||
doc = Nokogiri::XML(xml) { |cfg| cfg.noblanks }
|
|
||||||
email = doc.xpath("//person/email").text.to_s
|
|
||||||
Person.first(:email => email)
|
|
||||||
end
|
|
||||||
|
|
||||||
def parse_body_contents_from_xml(xml)
|
def parse_body_contents_from_xml(xml)
|
||||||
doc = Nokogiri::XML(xml) { |cfg| cfg.noblanks }
|
doc = Nokogiri::XML(xml) { |cfg| cfg.noblanks }
|
||||||
doc.xpath("/XML/post")
|
doc.xpath("/XML/post")
|
||||||
end
|
end
|
||||||
|
|
||||||
def parse_owner_id_from_xml(doc)
|
def parse_owner_id_from_xml(xml)
|
||||||
|
doc = Nokogiri::XML(xml) { |cfg| cfg.noblanks }
|
||||||
id = doc.xpath("//person_id").text.to_s
|
id = doc.xpath("//person_id").text.to_s
|
||||||
Person.first(:id => id)
|
Person.first(:id => id)
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_or_create_person_object_from_xml(doc)
|
def get_or_create_person_object_from_xml(xml)
|
||||||
|
doc = Nokogiri::XML(xml) { |cfg| cfg.noblanks }
|
||||||
person_xml = doc.xpath("//request/person").to_s
|
person_xml = doc.xpath("//request/person").to_s
|
||||||
person_id = doc.xpath("//request/person/_id").text.to_s
|
person_id = doc.xpath("//request/person/_id").text.to_s
|
||||||
person = Person.first(:_id => person_id)
|
person = Person.first(:_id => person_id)
|
||||||
|
|
@ -28,23 +24,7 @@ module Diaspora
|
||||||
return unless body = parse_body_contents_from_xml(xml).children.first
|
return unless body = parse_body_contents_from_xml(xml).children.first
|
||||||
|
|
||||||
begin
|
begin
|
||||||
object = body.name.camelize.constantize.from_xml body.to_s
|
body.name.camelize.constantize.from_xml body.to_s
|
||||||
|
|
||||||
if object.is_a? Retraction
|
|
||||||
elsif object.is_a? Profile
|
|
||||||
person = parse_owner_id_from_xml body
|
|
||||||
person.profile = object
|
|
||||||
person.save
|
|
||||||
elsif object.is_a? Request
|
|
||||||
person = get_or_create_person_object_from_xml(body)
|
|
||||||
person.serialized_key ||= object.exported_key
|
|
||||||
object.person = person
|
|
||||||
object.person.save
|
|
||||||
object.save
|
|
||||||
elsif object.respond_to? :person
|
|
||||||
object.person = parse_owner_from_xml body.to_s
|
|
||||||
end
|
|
||||||
object
|
|
||||||
rescue NameError => e
|
rescue NameError => e
|
||||||
if e.message.include? 'wrong constant name'
|
if e.message.include? 'wrong constant name'
|
||||||
Rails.logger.info "Not a real type: #{object.to_s}"
|
Rails.logger.info "Not a real type: #{object.to_s}"
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,6 @@ describe PublicsController do
|
||||||
|
|
||||||
req.delete
|
req.delete
|
||||||
@user2.reload
|
@user2.reload
|
||||||
puts @user2.inspect
|
|
||||||
@user2.pending_requests.count.should be 1
|
@user2.pending_requests.count.should be 1
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -222,11 +222,15 @@ describe User do
|
||||||
|
|
||||||
it 'should be able to parse and store a status message from xml' do
|
it 'should be able to parse and store a status message from xml' do
|
||||||
status_message = @user2.post :status_message, :message => 'store this!'
|
status_message = @user2.post :status_message, :message => 'store this!'
|
||||||
|
person = @user2.person
|
||||||
|
|
||||||
xml = status_message.to_diaspora_xml
|
xml = status_message.to_diaspora_xml
|
||||||
@user2.destroy
|
@user2.destroy
|
||||||
status_message.destroy
|
status_message.destroy
|
||||||
StatusMessage.all.size.should == 0
|
StatusMessage.all.size.should == 0
|
||||||
@user.receive( xml )
|
@user.receive( xml )
|
||||||
|
|
||||||
|
person.posts.first.message.should == 'store this!'
|
||||||
StatusMessage.all.size.should == 1
|
StatusMessage.all.size.should == 1
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue