diff options
| author | Kip Cole | 2012-10-06 12:04:31 +0800 |
|---|---|---|
| committer | Kip Cole | 2012-10-06 12:04:31 +0800 |
| commit | db09dd23cd9b520441397acc4f82961fc3f58790 (patch) | |
| tree | 2ee926b841211630c79a213a1f0ce7263f430733 | |
| parent | abf6d64a30feaa8d7e1b155fad989c930f1aaa7a (diff) | |
| download | evernote-db09dd23cd9b520441397acc4f82961fc3f58790.tar.bz2 | |
Further work on the Evernote wrapper API
| -rw-r--r-- | .gitignore | 2 | ||||
| -rw-r--r-- | lib/evernote/note_store.rb | 70 |
2 files changed, 59 insertions, 13 deletions
@@ -7,3 +7,5 @@ pkg *.bundle ext/Makefile ext/mkmf.log +Makefile +mkmf.log diff --git a/lib/evernote/note_store.rb b/lib/evernote/note_store.rb index 0f373a0..f6186ff 100644 --- a/lib/evernote/note_store.rb +++ b/lib/evernote/note_store.rb @@ -1,3 +1,6 @@ +# Needed for camelize +require 'active_support/core_ext/string/inflections' + module Evernote class NoteStore attr_reader :access_token, :notestore @@ -15,6 +18,14 @@ module Evernote end end + def update_count + sync_state.updateCount + end + + def sync_state + @sync_state ||= self.get_sync_state + end + # Camelize the method names for ruby consistency and push the access_token to the front of the args array def method_missing(name, *args, &block) @notestore.send(name.to_s.camelize(:lower), *(args.unshift(@access_token)), &block) @@ -36,6 +47,9 @@ module Evernote @notes || all end + # TODO turn filter params into options + # where(:created => 'since', :updated => 'since', :words => '.....') + # ie. mimic the AR interface as much as practical def all(rows = max) @filter = NoteFilter.new @filter.notebook_guid = notebook.guid @@ -73,14 +87,18 @@ module Evernote @note = note end - def content(options = :all) - @content ||= get_content(options) + def content(options = :enml) + @content ||= content!(options) + end + + def content!(options = :enml) + @content = notestore.get_note(*args_from(options).unshift(note.guid)) end def enml content.content end - + def created @created ||= Time.at(note.created / 1000) end @@ -98,11 +116,13 @@ module Evernote end def resources - note.resources || [] + @resources ||= note.resources.inject([]) do |resources, resource| + resources.push Resource.new(notestore, resource) + end rescue [] end - def get_content(options = :all) - notestore.get_note(*args_from(options).unshift(note.guid)) + def tags + @tags ||= notestore.get_note_tag_names(note.guid) end def method_missing(name, *args, &block) @@ -111,16 +131,40 @@ module Evernote private def args_from(options) - if options == :all - return true, true, false, false - elsif options == :enml - return true, false, false, false - else - return true, false, false, false + options = :enml unless [:enml, :all].include?(options) + case options + when :all + [true, true, false, false] + when :enml + [true, false, false, false] end end - + end + + class Resource + attr_reader :notestore, :resource + WITH_DATA = true + WITH_RECOGNITION = false + WITH_ATTRIBUTES = false + WITH_ALTERNATE_DATA = false + + def initialize(notestore, resource) + @notestore = notestore + @resource = resource + end + def body + @body ||= resource.data.body || + notestore.get_resource(self.guid, WITH_DATA, WITH_RECOGNITION, WITH_ATTRIBUTES, WITH_ALTERNATE_DATA).data.body + end + + def mime_type + defined?(Mime::Type) ? Mime::Type.lookup(self.mime) : self.mime + end + + def method_missing(name, *args, &block) + @resource.send(name.to_s.camelize(:lower), *args, &block) + end end class NoteFilter |
