diff --git a/app/helpers/posts_helper.rb b/app/helpers/posts_helper.rb index 35e981a1c..d8a2bd17e 100644 --- a/app/helpers/posts_helper.rb +++ b/app/helpers/posts_helper.rb @@ -20,6 +20,6 @@ module PostsHelper def post_iframe_url(post_id, opts={}) opts[:width] ||= 516 opts[:height] ||= 315 - "".html_safe + "".html_safe end end diff --git a/app/presenters/o_embed_presenter.rb b/app/presenters/o_embed_presenter.rb new file mode 100644 index 000000000..a5a312a3c --- /dev/null +++ b/app/presenters/o_embed_presenter.rb @@ -0,0 +1,44 @@ +class OEmbedPresenter + include PostsHelper + + def initialize(post, opts = {}) + @post = post + @opts = opts + end + + def to_json(opts={}) + as_json(opts).to_json + end + + def as_json(opts) + { + :provider_name => "Diaspora", + :provider_url => AppConfig[:pod_url], + :version => '1.0', + :title => post_title, + :author_name => post_author, + :author_url => post_author_url, + :width => @opts.fetch(:height, 516), + :height => @opts.fetch(:width, 320), + :html => iframe_html + } + end + + private + + def post_title + @post.text + end + + def post_author + @post.author.name + end + + def post_author_url + Rails.application.routes.url_helpers.person_url(@post.author) + end + + def iframe_html + post_iframe_url(@post.id) + end +end \ No newline at end of file diff --git a/spec/presenters/o_embed_presenter_spec.rb b/spec/presenters/o_embed_presenter_spec.rb new file mode 100644 index 000000000..cb24c955d --- /dev/null +++ b/spec/presenters/o_embed_presenter_spec.rb @@ -0,0 +1,6 @@ +require 'spec_helper' +describe OEmbedPresenter do + it 'works' do + OEmbedPresenter.new(Factory(:status_message)).to_json.should_not be_nil + end +end \ No newline at end of file