class Memot::Evernote

Public Class Methods

new(token, sandbox) click to toggle source
# File lib/memot/evernote.rb, line 8
def initialize(token, sandbox)
  @token = token
  @client = EvernoteOAuth::Client.new(token: token, sandbox: sandbox)
end

Public Instance Methods

create_note(title, body, notebook) click to toggle source
# File lib/memot/evernote.rb, line 13
def create_note(title, body, notebook)
  note = ::Evernote::EDAM::Type::Note.new
  note.title = title.force_encoding("UTF-8")
  note.content = create_note_content(body).force_encoding("UTF-8")
  note.notebookGuid = get_notebook_guid(notebook)
  note_store.createNote(token, note)

rescue ::Evernote::EDAM::Error::EDAMUserException, ::Evernote::EDAM::Error::EDAMSystemException => e
  raise_error e
end
create_notebook(name, stack = "") click to toggle source
# File lib/memot/evernote.rb, line 50
def create_notebook(name, stack = "")
  notebook = ::Evernote::EDAM::Type::Notebook.new
  notebook.name = name
  notebook.stack = stack unless stack == ""
  note_store.createNotebook(token, notebook)

rescue ::Evernote::EDAM::Error::EDAMUserException, ::Evernote::EDAM::Error::EDAMSystemException => e
  raise_error e
end
get_note_guid(title, notebook) click to toggle source
# File lib/memot/evernote.rb, line 35
def get_note_guid(title, notebook)
  notebook_guid = get_notebook_guid(notebook, false)
  return "" if notebook_guid == ""

  filter = ::Evernote::EDAM::NoteStore::NoteFilter.new
  filter.notebookGuid = notebook_guid
  spec = ::Evernote::EDAM::NoteStore::NotesMetadataResultSpec.new
  spec.includeTitle = true
  results = note_store.findNotesMetadata(token, filter, 0, 10000, spec).notes.select { |nt| nt.title == title }
  results.length > 0 ? results.first.guid : ""

rescue ::Evernote::EDAM::Error::EDAMSystemException => e
  raise_error e
end
get_notebook_guid(notebook, create = true) click to toggle source
# File lib/memot/evernote.rb, line 60
def get_notebook_guid(notebook, create = true)
  results = note_store.listNotebooks.select { |nb| nb.name == notebook }

  if results.length > 0
    results.first.guid
  else
    create ? create_notebook(notebook).guid : ""
  end
rescue ::Evernote::EDAM::Error::EDAMSystemException => e
  raise_error e
end
update_note(title, body, notebook, note_guid) click to toggle source
# File lib/memot/evernote.rb, line 24
def update_note(title, body, notebook, note_guid)
  note = note_store.getNote(token, note_guid, true, true, true, true)
  note.title = title.force_encoding("UTF-8")
  note.content = create_note_content(body).force_encoding("UTF-8")
  note.notebookGuid = get_notebook_guid(notebook, false)
  note_store.updateNote(token, note)

rescue ::Evernote::EDAM::Error::EDAMUserException, ::Evernote::EDAM::Error::EDAMSystemException => e
  raise_error e
end

Private Instance Methods

client() click to toggle source
# File lib/memot/evernote.rb, line 74
def client
  @client
end
create_note_content(body) click to toggle source
# File lib/memot/evernote.rb, line 86
    def create_note_content(body)
      content = <<EOS

<!DOCTYPE en-note SYSTEM "http://xml.evernote.com/pub/enml2.dtd">
<en-note>
#{body}
</en-note>
EOS
      content
    end
note_store() click to toggle source
# File lib/memot/evernote.rb, line 78
def note_store
  @note_store ||= client.note_store
end
raise_error(e) click to toggle source
# File lib/memot/evernote.rb, line 97
def raise_error(e)
  raise EvernoteRateLimitReachedError, e.rateLimitDuration if e.errorCode == ::Evernote::EDAM::Error::EDAMErrorCode::RATE_LIMIT_REACHED

  error_text = ::Evernote::EDAM::Error::EDAMErrorCode::VALUE_MAP[e.errorCode]
  raise EvernoteError, "Exception raised (errorText: #{error_text})"
end
token() click to toggle source
# File lib/memot/evernote.rb, line 82
def token
  @token
end