class LiveJournal::Sync::Comments

Public Class Methods

new(user) click to toggle source
# File lib/livejournal/sync.rb, line 135
def initialize(user)
  @user = user
  @session = nil
  @maxid = nil
end

Public Instance Methods

run_body(start=0) { |cur, total, comments_hash| ... } click to toggle source
# File lib/livejournal/sync.rb, line 173
def run_body(start=0)  # :yields: cur, total, comments_hash
  while start < @maxid
    data = run_GET('body', start)
    parsed = LiveJournal::Sync::CommentsXML::Parser.new(data)
    break if parsed.comments.empty?
    cur = parsed.comments.keys.max
    yield cur, @maxid, parsed
    start = cur + 1
  end
end
run_metadata(start=0) { |cur, total, comments_hash| ... } click to toggle source
# File lib/livejournal/sync.rb, line 161
def run_metadata(start=0)  # :yields: cur, total, comments_hash
  while @maxid.nil? or start < @maxid
    data = run_GET('meta', start)
    parsed = LiveJournal::Sync::CommentsXML::Parser.new(data)
    @maxid ||= parsed.maxid
    break if parsed.comments.empty?
    cur = parsed.comments.keys.max
    yield cur, @maxid, parsed
    start = cur + 1
  end
end

Private Instance Methods

run_GET(mode, start) click to toggle source
# File lib/livejournal/sync.rb, line 141
def run_GET(mode, start)
  unless @session
    req = Request::SessionGenerate.new(@user)
    @session = req.run
  end

  path = "/export_comments.bml?get=comment_#{mode}&startid=#{start}"
  # authas:  hooray for features discovered by reading source!
  path += "&authas=#{@user.usejournal}" if @user.usejournal

  data = nil
  open(@user.server.url + path,
       'Cookie' => "ljsession=#{@session}") do |f|
    # XXX stream this data to the XML parser.
    data = f.read
  end
  return data
end