# Copyright (c) 2010, Diaspora Inc. This file is # licensed under the Affero General Public License version 3 or later. See # the COPYRIGHT file. module Diaspora class Director def initialize @structure = [:create_headers, :create_endpoints, :create_subject, :create_body, :create_footer] end def build(builder) @structure.inject("") do |xml, method| xml << builder.send(method) if builder.respond_to? method end end end class OstatusBuilder def initialize(user) @user = user end def create_headers <<-XML Diaspora #{@user.public_url}.atom #{@user.real_name}'s Public Feed Posts from Diaspora #{Time.now.xmlschema} #{@user.real_name} #{@user.public_url} XML end def create_endpoints <<-XML XML end def create_subject <<-XML http://activitystrea.ms/schema/1.0/person #{@user.public_url} #{@user.real_name} XML end def create_body @user.visible_posts(:person_id => @user.person.id, :public=>true).inject("") do |xml,curr| if curr.respond_to?(:to_activity) unless xml curr.to_activity else xml + curr.to_activity end end end end def create_footer <<-XML XML end end end