# 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 include Diaspora::Webhooks def initialize(user, posts) @user = user @posts = posts end def create_headers <<-XML Diaspora #{@user.public_url}.atom #{x(@user.name)}'s Public Feed Updates from #{x(@user.name)} on Diaspora #{@user.person.profile.image_url(:thumb_small)} #{Time.now.xmlschema} XML end def create_subject <<-XML http://activitystrea.ms/schema/1.0/person #{x(@user.name)} #{AppConfig[:pod_url]}people/#{@user.person.id} #{x(@user.username)} #{x(@user.person.name)} XML end def create_endpoints <<-XML XML end def create_body @posts.inject("") do |xml,curr| if curr.respond_to?(:to_activity) xml + curr.to_activity(:author => @user.person) else xml end end end def create_footer <<-XML XML end end end