Sha256: 62c1de02de3d0f3bf75046664a821dc801a6d1c4978d33b4ef5cd694a3b0758a

Contents?: true

Size: 1.78 KB

Versions: 1

Compression:

Stored size: 1.78 KB

Contents

require 'json'

class FBScrape::Post

  attr_accessor :id, :created_at, :message, :comments, :link

  def initialize payload, page_id=nil, token=nil
    @comments = []
    @page_id = page_id
    @token = token

    if payload
      load_from_payload(payload)
    end
  end

  def self.load_from_id id, access_token, page_id=nil
    post = FBScrape::Post.new({ 'id' => id }, page_id, access_token)
    post.load_comments
    post
  end

  def load_comments
    url = "https://graph.facebook.com/v#{FBScrape::GRAPH_VERSION}/#{@id}/comments?access_token=#{@token}"
    load_from_url url
  end

  def has_more_comments?
    @page_info && next_cursor
  end

  def load_all_comments
    while has_more_comments? do
      load_more_comments
    end
  end

  def to_json(*args)
    JSON.pretty_generate({
      id: @id,
      created_at: @created_at,
      message: @message,
      link: @link
    })
  end


  private

    def load_from_url url
      resp = HTTParty.get(url)
      case resp.code
        when 200
          response = JSON.parse(resp.body)
          @comments = @comments.concat(response["data"].collect{ |c| FBScrape::Comment.new(c, @token, @page_id) })
          @page_info = response["paging"]
        when 400
          response = JSON.parse(resp.body)
          error = response["error"]["message"]
          raise ArgumentError.new(error)
      end
    end

    def load_more_comments
      url = "https://graph.facebook.com/v#{FBScrape::GRAPH_VERSION}/#{@id}/comments?access_token=#{@token}&limit=15&after=#{next_cursor}"
      load_from_url url
    end


    def next_cursor
      @page_info["cursors"]["after"]
    end

    def load_from_payload payload
      @id = payload["id"]
      @created_at = payload["created_time"]
      @message = payload["message"]
      @link = payload["link"]
    end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
fb_scrape-0.0.5 lib/fb_scrape/post.rb