class Memot::Client

Public Class Methods

new(dropbox, evernote, logger) click to toggle source
# File lib/memot/client.rb, line 3
def initialize(dropbox, evernote, logger)
  @dropbox = dropbox
  @evernote = evernote
  @logger = logger
end

Public Instance Methods

save_to_evernote(dropbox_path, notebook, revision) click to toggle source
# File lib/memot/client.rb, line 26
def save_to_evernote(dropbox_path, notebook, revision)
  note_body = Memot::Markdown.parse_markdown(dropbox.file_body_of(dropbox_path))
  note_title = File.basename(dropbox_path)

  begin
    if (note_guid = evernote.get_note_guid(note_title, notebook)) == ""
      evernote.create_note(note_title, note_body, notebook)
      logger.info "Created: #{notebook}/#{note_title} (rev. #{revision})"
    else
      evernote.update_note(note_title, note_body, notebook, note_guid)
      logger.info "Updated: #{notebook}/#{note_title} (rev. #{revision})"
    end

  rescue Memot::EvernoteRateLimitReachedError => e
    sleep_interval = e.message.to_i + 60
    logger.warn "Evernote rate limit exceeded, retry after #{sleep_interval} seconds."
    sleep sleep_interval
    retry
  end
end
update(notes) click to toggle source
# File lib/memot/client.rb, line 9
def update(notes)
  logger.info("Updating...")

  need_update = []

  notes.each_pair do |notebook, dropbox_path|
    need_update << { notebook: notebook, updates: dropbox.parse_dir_tree!(dropbox_path) }
  end

  need_update.each do |update|
    notebook = update[:notebook].to_s
    update[:updates].each { |u| save_to_evernote(u[:dropbox_path], notebook, u[:revision]) }
  end

  logger.info("Finish")
end

Private Instance Methods

dropbox() click to toggle source
# File lib/memot/client.rb, line 49
def dropbox
  @dropbox
end
evernote() click to toggle source
# File lib/memot/client.rb, line 53
def evernote
  @evernote
end
logger() click to toggle source
# File lib/memot/client.rb, line 57
def logger
  @logger
end