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