Skip to content

Commit

Permalink
Handle embeds.
Browse files Browse the repository at this point in the history
  • Loading branch information
benubois committed Apr 18, 2018
1 parent 778e3bf commit f643020
Show file tree
Hide file tree
Showing 6 changed files with 112 additions and 2 deletions.
6 changes: 4 additions & 2 deletions app/assets/javascripts/_site.js.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -260,8 +260,10 @@ $.extend feedbin,
formatTweets: (selector = "entry_content_wrap") ->
if typeof(twttr) != "undefined" && typeof(twttr.widgets) != "undefined"
target = $("[data-behavior~=#{selector}]")
if $('blockquote.twitter-tweet', target).length > 0
twttr.widgets.load(target[0])
tweets = $('blockquote.twitter-tweet', target)
if tweets.length > 0
console.log tweets


formatInstagram: ->
if typeof(instgrm) != "undefined"
Expand Down
11 changes: 11 additions & 0 deletions app/controllers/embeds_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
class EmbedsController < ApplicationController

def twitter
@tweet = TwitterEmbed.new(params[:url])
end

def instagram
end


end
61 changes: 61 additions & 0 deletions app/models/twitter_embed.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
class TwitterEmbed

attr_reader :url

def initialize(url)
@url = url
end

def name
data.dig("author_name")
end

def screen_name
"@#{user}"
end

def tweet_url
data.dig("url")
end

def date
Date.parse document.search("blockquote > a").text
end

def content
document.search("p").to_s
end

def profile_image_url
"https://twitter.com/#{user}/profile_image?size=bigger"
end

def author_url
data.dig("author_url")
end

private

TWITTER_URL = "https://publish.twitter.com/oembed"

def user
@user ||= data.dig("author_url") && data.dig("author_url").split("/").last
end

def document
@document ||= Nokogiri::HTML5.fragment(data.dig("html"))
end

def data
@data ||= begin
options = {
params: {
url: url,
omit_script: true
}
}
HTTP.get(TWITTER_URL, options).parse
end
end

end
30 changes: 30 additions & 0 deletions app/views/embeds/twitter.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<div class="tweet">
<header class="tweet-header">
<%= link_to @tweet.tweet_url, target: "_blank", title: "View on Twitter" do %>
<%= image_tag_with_fallback(image_url("favicon-profile-default.png"), @tweet.profile_image_url, size: "47x47", alt: "") %>
<% end %>
<h1>
<a href="<%= @tweet.author_url %>" target="_blank" class="link">
<strong><%= @tweet.name %></strong>
<%= @tweet.screen_name %>
</a>
<span class="tweet-actions">
<%= link_to @tweet.tweet_url, target: "_blank", title: "View on Twitter", class: "twitter-link" do %>
<%= svg_tag "icon-twitter" %>
<% end %>
</span>
</h1>
<p class="post-meta">
<%= link_to @tweet.tweet_url, target: "_blank", title: "View on Twitter" do %>
<time datetime="<%= @tweet.date.iso8601 %>">
<%= @tweet.date.to_s(:full_human) %>
</time>
<% end %>
</p>
</header>

<div class="tweet-body">
<%= @tweet.content.html_safe %>
</div>

</div>
Empty file added app/views/embeds/twitter.js.erb
Empty file.
6 changes: 6 additions & 0 deletions config/routes.rb
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,12 @@
end
end

resources :embeds, only: [] do
collection do
get :twitter
end
end

resources :users, id: /.*/ do
member do
patch :settings_update, controller: :settings
Expand Down

0 comments on commit f643020

Please sign in to comment.