class FBScrape::Comment

Attributes

created_at[RW]
from_id[RW]
from_name[RW]
id[RW]
message[RW]
page_id[RW]
replies[RW]

Public Class Methods

new(payload, access_token=nil, page_id=nil) click to toggle source
# File lib/fb_scrape/comment.rb, line 7
def initialize(payload, access_token=nil, page_id=nil)
  @replies = []
  @access_token = access_token
  @page_id = page_id
  load_from_payload payload
end

Public Instance Methods

has_more_replies?() click to toggle source
# File lib/fb_scrape/comment.rb, line 24
def has_more_replies?
  @page_info && next_cursor
end
is_page_response?() click to toggle source
# File lib/fb_scrape/comment.rb, line 14
def is_page_response?
  @page_id == @from_id
end
load_all_replies(limit=nil) click to toggle source
# File lib/fb_scrape/comment.rb, line 28
def load_all_replies(limit=nil)
  while has_more_replies? && is_below_limit?(limit) do
    load_more_replies
  end
end
load_replies(access_token=nil) click to toggle source
# File lib/fb_scrape/comment.rb, line 18
def load_replies access_token=nil
  @access_token = access_token if access_token
  url = "https://graph.facebook.com/v#{FBScrape::GRAPH_VERSION}/#{@id}/comments?access_token=#{@access_token}"
  load_from_url url
end
to_json(*args) click to toggle source
# File lib/fb_scrape/comment.rb, line 34
def to_json(*args)
  JSON.pretty_generate({
    id: @id,
    created_at: @created_at,
    from_name: @from_name,
    from_id: @from_id,
    page_id: @page_id,
    message: @message
  })
end

Private Instance Methods

is_below_limit?(limit) click to toggle source
# File lib/fb_scrape/comment.rb, line 47
def is_below_limit?(limit)
  is_below_limit = limit.nil? || @replies.length < limit
end
load_from_payload(payload) click to toggle source
# File lib/fb_scrape/comment.rb, line 77
def load_from_payload payload
  if payload
    @id =  payload['id']
    @created_at = payload['created_time']
    @message = payload['message']

    if payload['from']
      @from_name = payload['from']['name']
      @from_id = payload['from']['id']
    end
  end
end
load_from_url(url) click to toggle source
# File lib/fb_scrape/comment.rb, line 61
def load_from_url url

  resp = HTTParty.get(url)

  case resp.code
    when 200
      response = JSON.parse(resp.body)
      @replies = @replies.concat(response["data"].collect{ |c| FBScrape::Comment.new(c, @access_token, @page_id) })
      @page_info = response["paging"]
    when 400
      response = JSON.parse(resp.body)
      error = response["error"]["message"]
      raise ArgumentError.new(error)
  end
end
load_more_replies() click to toggle source
# File lib/fb_scrape/comment.rb, line 56
def load_more_replies
  url = "https://graph.facebook.com/v#{FBScrape::GRAPH_VERSION}/#{@id}/comments?access_token=#{@access_token}&limit=25&after=next_cursor"
  load_from_url url
end
next_cursor() click to toggle source
# File lib/fb_scrape/comment.rb, line 52
def next_cursor
  @page_info["cursors"]["next"]
end