class Vid::Facebook::Video
Attributes
comment_count[R]
id[R]
like_count[R]
published_at[R]
title[R]
Public Class Methods
find(id)
click to toggle source
# File lib/vid/facebook/video.rb, line 16 def self.find(id) uri = URI::HTTPS.build host: 'graph.facebook.com', path: "/v2.6/#{id}", query: "access_token=#{ENV['FB_APP_ID']}%7C#{ENV['FB_APP_SECRET']}&fields=id,permalink_url,created_time,description,title,from,comments.limit(0).summary(true),likes.limit(0).summary(true)" http_request = Net::HTTP::Get.new(uri.request_uri) net_http_options = [uri.host, uri.port, use_ssl: true] response = Net::HTTP.start('graph.facebook.com', 443, use_ssl: true) do |http| http.request http_request end attributes = JSON response.body uri = URI::HTTPS.build host: 'www.facebook.com', path: "/video.php", query: "v=#{id}" http_request = Net::HTTP::Get.new(uri.request_uri) net_http_options = [uri.host, uri.port, use_ssl: true] response = Net::HTTP.start('www.facebook.com', 443, use_ssl: true) do |http| http.request http_request end view_count = %r{<div></div><span class="fcg">(?<views>.*) Views</span>}.match(response.body)[:views].tr(',','').to_i new attributes.merge(view_count: view_count) end
new(attributes = {})
click to toggle source
# File lib/vid/facebook/video.rb, line 7 def initialize(attributes = {}) @id = attributes['id'] @published_at = attributes['created_time'] @title = attributes['description'] @comment_count = attributes['comments']['summary']['total_count'] @like_count = attributes['likes']['summary']['total_count'] @view_count = attributes[:view_count] end
where(clauses)
click to toggle source
# File lib/vid/facebook/video.rb, line 39 def self.where(clauses) uri = URI::HTTPS.build host: 'graph.facebook.com', path: "/", query: "include_headers=false&access_token=#{ENV['FB_APP_ID']}%7C#{ENV['FB_APP_SECRET']}" http_request = Net::HTTP::Post.new(uri.request_uri) batch = clauses[:id].map do |id| {"method":"GET", "relative_url": "/v2.6/#{id}?fields=id,permalink_url,created_time,description,title,from,comments.limit(0).summary(true),likes.limit(0).summary(true)"} end http_request.set_form_data batch: batch.to_json net_http_options = [uri.host, uri.port, use_ssl: true] response = Net::HTTP.start('graph.facebook.com', 443, use_ssl: true) do |http| http.request http_request end JSON(response.body).map do |attributes| uri = URI::HTTPS.build host: 'www.facebook.com', path: "/video.php", query: "v=#{JSON(attributes['body'])['id']}" http_request = Net::HTTP::Get.new(uri.request_uri) net_http_options = [uri.host, uri.port, use_ssl: true] response = Net::HTTP.start('www.facebook.com', 443, use_ssl: true) do |http| http.request http_request end view_count = %r{<div></div><span class="fcg">(?<views>.*) Views</span>}.match(response.body)[:views].tr(',','').to_i new JSON(attributes['body']).merge(view_count: view_count) end end