diff --git a/app/controllers/blogs_controller.rb b/app/controllers/blogs_controller.rb
index 4a548de06..e7461cedc 100644
--- a/app/controllers/blogs_controller.rb
+++ b/app/controllers/blogs_controller.rb
@@ -6,7 +6,7 @@ class BlogsController < ApplicationController
respond_to do |format|
format.html
- format.atom {render :xml => Diaspora::XML::generate(:current_url => request.url, :objects => @blogs)}
+ format.atom {render :xml => Diaspora::OStatus::generate(:current_url => request.url, :objects => @blogs)}
end
diff --git a/app/controllers/bookmarks_controller.rb b/app/controllers/bookmarks_controller.rb
index 1c7b8d986..d22e934c2 100644
--- a/app/controllers/bookmarks_controller.rb
+++ b/app/controllers/bookmarks_controller.rb
@@ -8,7 +8,7 @@ class BookmarksController < ApplicationController
respond_to do |format|
format.html
- format.atom {render :xml => Diaspora::XML::generate(:current_url => request.url, :objects => @bookmarks)}
+ format.atom {render :xml => Diaspora::OStatus::generate(:current_url => request.url, :objects => @bookmarks)}
end
end
diff --git a/app/controllers/status_messages_controller.rb b/app/controllers/status_messages_controller.rb
index 1e68a74da..356612181 100644
--- a/app/controllers/status_messages_controller.rb
+++ b/app/controllers/status_messages_controller.rb
@@ -7,7 +7,7 @@ class StatusMessagesController < ApplicationController
respond_to do |format|
format.html
- format.atom {render :xml => Diaspora::XML::generate(:current_url => request.url, :objects => @status_messages)}
+ format.atom {render :xml => Diaspora::OStatus::generate(:current_url => request.url, :objects => @status_messages)}
end
end
diff --git a/app/models/album.rb b/app/models/album.rb
index 85a8de14f..1307cfd2c 100644
--- a/app/models/album.rb
+++ b/app/models/album.rb
@@ -18,8 +18,8 @@ class Album
before_destroy :destroy_photos
after_save :notify_people
-
before_destroy :propagate_retraction
+
def prev_photo(photo)
n_photo = self.photos.where(:created_at.lt => photo.created_at).sort(:created_at.desc).first
n_photo ? n_photo : self.photos.sort(:created_at.desc).first
@@ -31,7 +31,6 @@ class Album
end
protected
-
def destroy_photos
photos.each{|p| p.destroy}
end
diff --git a/app/models/blog.rb b/app/models/blog.rb
index 8cb375f45..0df0dd558 100644
--- a/app/models/blog.rb
+++ b/app/models/blog.rb
@@ -9,4 +9,18 @@ class Blog < Post
validates_presence_of :title, :body
+ def to_activity
+ <<-XML
+
+ http://activitystrea.ms/schema/1.0/post
+ #{self.title}
+ #{self.body}
+
+ #{User.owner.url}blogs/#{self.id}
+ #{self.created_at.xmlschema}
+ #{self.updated_at.xmlschema}
+
+ XML
+ end
+
end
diff --git a/app/models/bookmark.rb b/app/models/bookmark.rb
index 340643716..8f793fd47 100644
--- a/app/models/bookmark.rb
+++ b/app/models/bookmark.rb
@@ -14,8 +14,21 @@ class Bookmark < Post
before_validation :clean_link
- protected
+ def to_activity
+ <<-XML
+
+ http://activitystrea.ms/schema/1.0/post
+ #{self.title}
+
+
+ #{User.owner.url}bookmarks/#{self.id}
+ #{self.created_at.xmlschema}
+ #{self.updated_at.xmlschema}
+
+ XML
+ end
+ protected
def clean_link
if self.link
self.link = 'http://' + self.link unless self.link.match('https?://')
diff --git a/app/models/status_message.rb b/app/models/status_message.rb
index 65e578dd6..accad2a8c 100644
--- a/app/models/status_message.rb
+++ b/app/models/status_message.rb
@@ -5,10 +5,22 @@ class StatusMessage < Post
xml_accessor :message
key :message, String
-
-
validates_presence_of :message
+
+ def to_activity
+ <<-XML
+
+ http://activitystrea.ms/schema/1.0/post
+ #{self.message}
+
+ #{User.owner.url}status_messages/#{self.id}
+ #{self.created_at.xmlschema}
+ #{self.updated_at.xmlschema}
+
+ XML
+ end
+
def ==(other)
(self.message == other.message) && (self.person.email == other.person.email)
end
diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml
index 3d0d5f3e4..0665430a0 100644
--- a/app/views/layouts/application.html.haml
+++ b/app/views/layouts/application.html.haml
@@ -53,7 +53,7 @@
.span-18.append-3.last
= yield
.span-3.last
- = link_to (image_tag(current_user.profile.image_url)), root_path
+ = link_to (person_image_tag(current_user), root_path)
= link_to "Edit your profile", edit_user_path(current_user)
%br
%br
diff --git a/lib/diaspora/ostatus_generator.rb b/lib/diaspora/ostatus_generator.rb
new file mode 100644
index 000000000..d4bf55379
--- /dev/null
+++ b/lib/diaspora/ostatus_generator.rb
@@ -0,0 +1,70 @@
+module Diaspora
+ module OStatus
+ def self.generate(opts= {})
+ xml = Generate::headers(opts[:current_url])
+ xml << Generate::author
+ xml << Generate::endpoints
+ xml << Generate::subject
+ xml << Generate::entries(opts[:objects])
+ xml << Generate::footer
+ end
+
+ module Generate
+ def self.headers(current_url)
+ #this is retarded
+ @@user = User.owner
+ <<-XML
+
+
+ Diaspora
+ #{current_url}
+ Stream
+ its a stream
+ #{Time.now.xmlschema}
+ XML
+ end
+
+ def self.author
+ <<-XML
+
+ #{@@user.real_name}
+ #{@@user.url}
+
+ XML
+ end
+
+ def self.endpoints
+ <<-XML
+
+ XML
+ end
+
+ def self.subject
+ <<-XML
+
+ http://activitystrea.ms/schema/1.0/person
+ #{@@user.url}
+ #{@@user.real_name}
+
+
+ XML
+ end
+
+ def self.entries(objects)
+ xml = ""
+ if objects.respond_to? :each
+ objects.each {|x| xml << x.to_ostatus}
+ else
+ xml << objects.to_activity
+ end
+ xml
+ end
+
+ def self.footer
+ <<-XML.strip
+
+ XML
+ end
+ end
+ end
+end
\ No newline at end of file
diff --git a/lib/diaspora/webhooks.rb b/lib/diaspora/webhooks.rb
index 9c9af0e5d..1a886a170 100644
--- a/lib/diaspora/webhooks.rb
+++ b/lib/diaspora/webhooks.rb
@@ -1,7 +1,7 @@
module Diaspora
- module Webhooks
- def self.included(klass)
- klass.class_eval do
+ module Webhooks
+ def self.included(klass)
+ klass.class_eval do
include ROXML
require 'message_handler'
@@queue = MessageHandler.new
@@ -57,124 +57,7 @@ module Diaspora
xml += ""
xml += ""
end
-
end
- end
- end
-
- module XML
-
- def self.generate(opts= {})
- xml = Generate::headers(opts[:current_url])
- xml << Generate::author
- xml << Generate::endpoints
- xml << Generate::subject
- xml << Generate::entries(opts[:objects])
- xml << Generate::footer
- end
-
- module Generate
- def self.headers(current_url)
- #this is retarded
- @@user = User.owner
- <<-XML
-
-
- Diaspora
- #{current_url}
- Stream
- its a stream
- #{Time.now.xmlschema}
- XML
- end
-
- def self.author
- <<-XML
-
- #{@@user.real_name}
- #{@@user.url}
-
- XML
- end
-
- def self.endpoints
- <<-XML
-
- XML
- end
-
- def self.subject
- <<-XML
-
- http://activitystrea.ms/schema/1.0/person
- #{@@user.url}
- #{@@user.real_name}
-
-
- XML
- end
-
- def self.entries(objects)
- xml = ""
- if objects.respond_to? :each
- objects.each {|x| xml << self.entry(x)}
- else
- xml << self.entry(objects)
- end
- xml
- end
-
- def self.entry(object)
- eval "#{object.class}_build_entry(object)"
- end
-
- def self.StatusMessage_build_entry(status_message)
- <<-XML
-
- http://activitystrea.ms/schema/1.0/post
- #{status_message.message}
-
- #{@@user.url}status_messages/#{status_message.id}
- #{status_message.created_at.xmlschema}
- #{status_message.updated_at.xmlschema}
-
- XML
- end
-
- def self.Bookmark_build_entry(bookmark)
- <<-XML
-
- http://activitystrea.ms/schema/1.0/post
- #{bookmark.title}
-
-
- #{@@user.url}bookmarks/#{bookmark.id}
- #{bookmark.created_at.xmlschema}
- #{bookmark.updated_at.xmlschema}
-
- XML
- end
-
-
- def self.Blog_build_entry(blog)
- <<-XML
-
- http://activitystrea.ms/schema/1.0/post
- #{blog.title}
- #{blog.body}
-
- #{@@user.url}blogs/#{blog.id}
- #{blog.created_at.xmlschema}
- #{blog.updated_at.xmlschema}
-
- XML
- end
-
- def self.footer
- <<-XML.strip
-
- XML
- end
- end
end
+ end
end
\ No newline at end of file
diff --git a/spec/controllers/dashboards_controller_spec.rb b/spec/controllers/dashboards_controller_spec.rb
index 87cfe8049..215fd09d4 100644
--- a/spec/controllers/dashboards_controller_spec.rb
+++ b/spec/controllers/dashboards_controller_spec.rb
@@ -2,7 +2,6 @@ require File.dirname(__FILE__) + '/../spec_helper'
describe DashboardsController do
render_views
-
before do
@user = Factory.create(:user, :profile => Profile.new( :first_name => "bob", :last_name => "smith"))
request.env['warden'] = mock_model(Warden, :authenticate? => @user, :authenticate! => @user, :authenticate => @user)
diff --git a/spec/lib/xml_spec.rb b/spec/lib/diaspora_ostatus_generator_spec.rb
similarity index 59%
rename from spec/lib/xml_spec.rb
rename to spec/lib/diaspora_ostatus_generator_spec.rb
index 42b26d01c..b524e605b 100644
--- a/spec/lib/xml_spec.rb
+++ b/spec/lib/diaspora_ostatus_generator_spec.rb
@@ -1,16 +1,18 @@
require File.dirname(__FILE__) + '/../spec_helper'
-describe Diaspora::XML do
+require 'lib/diaspora/ostatus_generator'
+
+describe Diaspora::OStatus do
before do
@user = Factory.create(:user)
- Diaspora::XML::OWNER = @user
+ Diaspora::OStatus::OWNER = @user
end
- describe Diaspora::XML::Generate do
+ describe Diaspora::OStatus::Generate do
describe "header" do
it 'should generate an OStatus compliant header' do
- Diaspora::XML::Generate::headers(:current_url => @user.url).should include @user.url
+ Diaspora::OStatus::Generate::headers(:current_url => @user.url).should include @user.url
end
end
@@ -20,7 +22,7 @@ describe Diaspora::XML do
end
it "should encode to activity stream xml" do
- sm_entry = Diaspora::XML::generate(:objects => @status_message, :current_url => "http://diaspora.com/")
+ sm_entry = Diaspora::OStatus::generate(:objects => @status_message, :current_url => "http://diaspora.com/")
sm_entry.should include(@status_message.message)
sm_entry.should include('title')
end
diff --git a/spec/lib/parser_spec.rb b/spec/lib/diaspora_parser_spec.rb
similarity index 69%
rename from spec/lib/parser_spec.rb
rename to spec/lib/diaspora_parser_spec.rb
index be2d4c2c2..b01f6f247 100644
--- a/spec/lib/parser_spec.rb
+++ b/spec/lib/diaspora_parser_spec.rb
@@ -1,9 +1,8 @@
require File.dirname(__FILE__) + '/../spec_helper'
include ApplicationHelper
-include Diaspora::OStatusParser
-describe "parser in application helper" do
+describe Diaspora::DiasporaParser do
before do
@user = Factory.create(:user, :email => "bob@aol.com")
@person = Factory.create(:person, :email => "bill@gates.com")
@@ -60,77 +59,6 @@ describe "parser in application helper" do
Post.count.should == 0
end
- describe 'ostatus parsing' do
- it 'should be able to get the hub of an ostatus feed' do
- xml_path = File.dirname(__FILE__) + '/../fixtures/identica_feed.atom'
- xml = File.open(xml_path).read
-
- Diaspora::OStatusParser::find_hub(xml).should == 'http://identi.ca/main/push/hub'
- end
-
-
- describe 'subscriber info' do
- before do
- #load file
- xml_path = File.dirname(__FILE__) + '/../fixtures/ostatus_update.xml'
- @xml = File.open(xml_path).read
- @xml = Nokogiri::HTML(@xml)
- end
-
-
- it 'should parse the users service' do
- Diaspora::OStatusParser::parse_service(@xml).should == 'StatusNet'
- end
-
- it 'should parse the feed_url' do
- Diaspora::OStatusParser::parse_feed_url(@xml).should == 'http://identi.ca/api/statuses/user_timeline/217769.atom'
- end
-
- it 'should parse the avatar thumbnail' do
- Diaspora::OStatusParser::parse_avatar_thumbnail(@xml).should == 'http://theme.status.net/0.9.3/identica/default-avatar-profile.png'
- end
-
- it 'should parse the username' do
- Diaspora::OStatusParser::parse_username(@xml).should == 'danielgrippi'
- end
-
- it 'should parse the profile_url' do
- Diaspora::OStatusParser::parse_profile_url(@xml).should == 'http://identi.ca/user/217769'
- end
-
- end
-
- describe 'entry' do
- before do
- #load file
- xml_path = File.dirname(__FILE__) + '/../fixtures/ostatus_update.xml'
- @xml = File.open(xml_path).read
- @xml = Nokogiri::HTML(@xml)
- end
-
- it 'should parse the message' do
- Diaspora::OStatusParser::parse_message(@xml).should == 'SOAP!'
- end
-
- it 'should parse the permalink' do
- Diaspora::OStatusParser::parse_permalink(@xml).should == 'http://identi.ca/notice/43074747'
- end
-
- it 'should parse published at date' do
- Diaspora::OStatusParser::parse_published_at(@xml).should == '2010-07-22T22:15:31+00:00'
-
- end
-
- it 'should parse the updated at date' do
- Diaspora::OStatusParser::parse_updated_at(@xml).should == '2010-07-22T22:15:31+00:00'
- end
- end
-
-
-
-
-
- end
describe "parsing compliant XML object" do
before do
@@ -224,7 +152,6 @@ describe "parser in application helper" do
Person.count.should == 1
end
-
end
end
diff --git a/spec/lib/ostatus_parser_spec.rb b/spec/lib/ostatus_parser_spec.rb
new file mode 100644
index 000000000..4bde6b19e
--- /dev/null
+++ b/spec/lib/ostatus_parser_spec.rb
@@ -0,0 +1,68 @@
+require File.dirname(__FILE__) + '/../spec_helper'
+
+describe Diaspora::OStatusParser do
+ it 'should be able to get the hub of an ostatus feed' do
+ xml_path = File.dirname(__FILE__) + '/../fixtures/identica_feed.atom'
+ xml = File.open(xml_path).read
+
+ Diaspora::OStatusParser::find_hub(xml).should == 'http://identi.ca/main/push/hub'
+ end
+
+
+ describe 'subscriber info' do
+ before do
+ #load file
+ xml_path = File.dirname(__FILE__) + '/../fixtures/ostatus_update.xml'
+ @xml = File.open(xml_path).read
+ @xml = Nokogiri::HTML(@xml)
+ end
+
+
+ it 'should parse the users service' do
+ Diaspora::OStatusParser::parse_service(@xml).should == 'StatusNet'
+ end
+
+ it 'should parse the feed_url' do
+ Diaspora::OStatusParser::parse_feed_url(@xml).should == 'http://identi.ca/api/statuses/user_timeline/217769.atom'
+ end
+
+ it 'should parse the avatar thumbnail' do
+ Diaspora::OStatusParser::parse_avatar_thumbnail(@xml).should == 'http://theme.status.net/0.9.3/identica/default-avatar-profile.png'
+ end
+
+ it 'should parse the username' do
+ Diaspora::OStatusParser::parse_username(@xml).should == 'danielgrippi'
+ end
+
+ it 'should parse the profile_url' do
+ Diaspora::OStatusParser::parse_profile_url(@xml).should == 'http://identi.ca/user/217769'
+ end
+
+ end
+
+ describe 'entry' do
+ before do
+ #load file
+ xml_path = File.dirname(__FILE__) + '/../fixtures/ostatus_update.xml'
+ @xml = File.open(xml_path).read
+ @xml = Nokogiri::HTML(@xml)
+ end
+
+ it 'should parse the message' do
+ Diaspora::OStatusParser::parse_message(@xml).should == 'SOAP!'
+ end
+
+ it 'should parse the permalink' do
+ Diaspora::OStatusParser::parse_permalink(@xml).should == 'http://identi.ca/notice/43074747'
+ end
+
+ it 'should parse published at date' do
+ Diaspora::OStatusParser::parse_published_at(@xml).should == '2010-07-22T22:15:31+00:00'
+
+ end
+
+ it 'should parse the updated at date' do
+ Diaspora::OStatusParser::parse_updated_at(@xml).should == '2010-07-22T22:15:31+00:00'
+ end
+ end
+end
\ No newline at end of file
diff --git a/spec/lib/common_spec.rb b/spec/lib/web_hooks_spec.rb
similarity index 100%
rename from spec/lib/common_spec.rb
rename to spec/lib/web_hooks_spec.rb
diff --git a/spec/lib/web_socket_spec.rb b/spec/lib/web_socket_spec.rb
deleted file mode 100644
index 4613dc98a..000000000
--- a/spec/lib/web_socket_spec.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require File.dirname(__FILE__) + '/../spec_helper'
-
-
-
-