Skip to content
Extraits de code Groupes Projets
Valider bee71c5a rédigé par Raphael's avatar Raphael
Parcourir les fichiers

RS, DG; All saving moved to user

parent c6a620c7
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -128,11 +128,17 @@ class User
object.perform
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)
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)
Rails.logger.debug("Saving object with success: #{object.save}")
end
......
module Diaspora
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)
doc = Nokogiri::XML(xml) { |cfg| cfg.noblanks }
doc.xpath("/XML/post")
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
Person.first(:id => id)
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_id = doc.xpath("//request/person/_id").text.to_s
person = Person.first(:_id => person_id)
......@@ -28,23 +24,7 @@ module Diaspora
return unless body = parse_body_contents_from_xml(xml).children.first
begin
object = 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
body.name.camelize.constantize.from_xml body.to_s
rescue NameError => e
if e.message.include? 'wrong constant name'
Rails.logger.info "Not a real type: #{object.to_s}"
......
......@@ -41,7 +41,6 @@ describe PublicsController do
req.delete
@user2.reload
puts @user2.inspect
@user2.pending_requests.count.should be 1
end
......
......@@ -222,11 +222,15 @@ describe User do
it 'should be able to parse and store a status message from xml' do
status_message = @user2.post :status_message, :message => 'store this!'
person = @user2.person
xml = status_message.to_diaspora_xml
@user2.destroy
status_message.destroy
StatusMessage.all.size.should == 0
@user.receive( xml )
person.posts.first.message.should == 'store this!'
StatusMessage.all.size.should == 1
end
end
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter