evernote_oauth 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  Evernote OAuth / Thrift API client library for Ruby
2
2
  ===================================================
3
- - Evernote OAuth version 0.1.1
3
+ - Evernote OAuth version 0.1.2
4
4
 
5
5
  Install the gem
6
6
  ---------------
@@ -90,6 +90,37 @@ shared_notebook = shared_note_store.getSharedNotebookByAuth
90
90
  shared_note_store.listTagsByNotebook(shared_notebook.notebookGuid)
91
91
  ```
92
92
 
93
+ ### Method Chaining ###
94
+ You can chain methods:
95
+ ```ruby
96
+ note_store.findNotes(Evernote::EDAM::NoteStore::NoteFilter.new, 0, 10).first.tags.first.parent
97
+ => [<Evernote::EDAM::Type::Tag guid:"xxxxx", name:"sample", updateSequenceNum:100>]
98
+ ```
99
+ Here are the additional methods for each types:
100
+
101
+ - Evernote::EDAM::NoteStore::NoteList
102
+ - notes
103
+ - Evernote::EDAM::NoteStore::NoteMetadata
104
+ - tags
105
+ - Evernote::EDAM::NoteStore::NotesMetadataList
106
+ - notes
107
+ - Evernote::EDAM::NoteStore::SyncChunk
108
+ - notes, notebooks, tags, searches, resources, linkedNotebooks
109
+ - Evernote::EDAM::Type::Note
110
+ - notebook, tags
111
+ - Evernote::EDAM::Type::Resource
112
+ - note: needs hash argument
113
+ - with_constant: boolean
114
+ - with_resources_data: boolean
115
+ - with_resources_recognition: boolean
116
+ - with_resources_alternate_data: boolean
117
+ - Evernote::EDAM::Type::SharedNotebook
118
+ - notebook
119
+ - Evernote::EDAM::Type::Tag
120
+ - parent
121
+
122
+ Notes: Those methods call thrift API internally. The result will be cached in the object so that the second method call wouldn't thrift API again.
123
+
93
124
  References
94
125
  ----------
95
126
  - Evernote Developers: http://dev.evernote.com/
@@ -14,7 +14,7 @@ Gem::Specification.new do |s|
14
14
  s.email = %q{api@evernote.com}
15
15
  s.files = ["LICENSE", "README.md", "evernote_oauth.gemspec"] + Dir.glob('{lib,spec}/**/*')
16
16
  s.has_rdoc = false
17
- s.homepage = %q{http://github.com/rekotan/evernote_oauth}
17
+ s.homepage = %q{http://github.com/evernote/evernote-oauth-ruby}
18
18
  s.rdoc_options = ["--inline-source", "--charset=UTF-8"]
19
19
  s.require_paths = ["lib"]
20
20
  s.rubyforge_project = %q{evernote_oauth}
@@ -0,0 +1,10 @@
1
+ module Evernote
2
+ module EDAM
3
+ module NoteStore
4
+ class NoteList
5
+ extend ::EvernoteOAuth::StoreAttachable
6
+ attach_note_store :notes
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,11 @@
1
+ module Evernote
2
+ module EDAM
3
+ module NoteStore
4
+ class NoteMetadata
5
+ def tags
6
+ @tags ||= (tagGuids || []).map{|guid| note_store.getTag(guid)}
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,10 @@
1
+ module Evernote
2
+ module EDAM
3
+ module NoteStore
4
+ class NotesMetadataList
5
+ extend NoteStoreAttachable
6
+ attach_note_store :notes
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ module Evernote
2
+ module EDAM
3
+ module NoteStore
4
+ class SyncChunk
5
+ extend ::EvernoteOAuth::StoreAttachable
6
+ attach_note_store :notes, :notebooks, :tags, :searches, :resources, :linkedNotebooks
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,15 @@
1
+ module Evernote
2
+ module EDAM
3
+ module Type
4
+ class Note
5
+ def notebook
6
+ @notebook ||= note_store.getNotebook(notebookGuid)
7
+ end
8
+
9
+ def tags
10
+ @tags ||= (tagGuids || []).map{|guid| note_store.getTag(guid)}
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,27 @@
1
+ module Evernote
2
+ module EDAM
3
+ module Type
4
+ class Resource
5
+ @note_by_options = {}
6
+
7
+ def note(options)
8
+ options = {
9
+ with_content: false,
10
+ with_resources_data: false,
11
+ with_resources_recognition: false,
12
+ with_resources_alternate_data: false
13
+ }.merge(options)
14
+
15
+ @note_by_opions[options] ||
16
+ (@note_by_options[options] = note_store.getNote(
17
+ noteGuid,
18
+ options[:with_content],
19
+ options[:with_resources_data],
20
+ options[:with_resources_recognition],
21
+ options[:with_resources_alternate_data])
22
+ )
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,11 @@
1
+ module Evernote
2
+ module EDAM
3
+ module Type
4
+ class SharedNotebook
5
+ def notebook
6
+ @notebook ||= note_store.getNotebook(notebookGuid)
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Evernote
2
+ module EDAM
3
+ module Type
4
+ class Tag
5
+ def parent
6
+ @parent ||= note_store.getTag(parentGuid) if parentGuid
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -4,9 +4,12 @@ require 'yaml'
4
4
 
5
5
  require 'evernote-thrift'
6
6
 
7
+ require 'evernote_types'
8
+
7
9
  require 'evernote_oauth/thrift_client_delegation'
8
10
  require 'evernote_oauth/client'
9
11
  require 'evernote_oauth/user_store'
10
12
  require 'evernote_oauth/note_store'
11
13
  require 'evernote_oauth/shared_note_store'
14
+ require 'evernote_oauth/store_attachable'
12
15
  require 'evernote_oauth/version'
@@ -0,0 +1,31 @@
1
+ module EvernoteOAuth
2
+ module StoreAttachable
3
+ def attach_user_store(*field_symbols)
4
+ attach_store('user', *field_symbols)
5
+ end
6
+
7
+ def attach_note_store(*field_symbols)
8
+ attach_store('note', *field_symbols)
9
+ end
10
+
11
+ def attach_store(type, *field_symbols)
12
+ field_symbols.each do |fs|
13
+ define_method(fs) do
14
+ original = "@#{fs}".to_sym
15
+ target = "@#{fs}_with_#{type}_stores".to_sym
16
+ with_stores = (
17
+ instance_variable_get(target) ||
18
+ begin
19
+ store_name = "#{type}_store"
20
+ store = eval(store_name)
21
+ [instance_variable_get(original)].flatten.each{|n|
22
+ n.define_singleton_method(store_name.to_sym){store}
23
+ }
24
+ end
25
+ )
26
+ instance_variable_set(target, with_stores)
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -8,14 +8,27 @@ module EvernoteOAuth
8
8
  idx_token = parameters.index{|e| e.last == :authenticationToken}
9
9
  new_args = args.dup.insert(idx_token, @token)
10
10
  begin
11
- @client.send(name, *new_args, &block)
11
+ result = @client.send(name, *new_args, &block)
12
12
  rescue ArgumentError => e
13
13
  puts e.inspect
14
- @client.send(name, *args, &block)
14
+ result = @client.send(name, *args, &block)
15
15
  end
16
16
  else
17
- @client.send(name, *args, &block)
17
+ result = @client.send(name, *args, &block)
18
18
  end
19
+
20
+ attr_name = underscore(self.class.name.split('::').last).to_sym
21
+ attr_value = self
22
+ [result].flatten.each{|r| r.define_singleton_method(attr_name){attr_value}}
23
+ result
24
+ end
25
+
26
+ private
27
+ def underscore(word)
28
+ word.to_s.gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
29
+ gsub(/([a-z\d])([A-Z])/,'\1_\2').
30
+ tr("-", "_").
31
+ downcase
19
32
  end
20
33
  end
21
34
 
@@ -1,3 +1,3 @@
1
1
  module EvernoteOAuth
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
@@ -0,0 +1,10 @@
1
+ require 'evernote_oauth/store_attachable'
2
+
3
+ require 'evernote/edam/type/note'
4
+ require 'evernote/edam/type/resource'
5
+ require 'evernote/edam/type/shared_notebook'
6
+ require 'evernote/edam/type/tag'
7
+
8
+ require 'evernote/edam/note_store/note_list'
9
+ require 'evernote/edam/note_store/note_metadata'
10
+ require 'evernote/edam/note_store/sync_chunk'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: evernote_oauth
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -69,19 +69,29 @@ files:
69
69
  - LICENSE
70
70
  - README.md
71
71
  - evernote_oauth.gemspec
72
+ - lib/evernote/edam/note_store/note_list.rb
73
+ - lib/evernote/edam/note_store/note_metadata.rb
74
+ - lib/evernote/edam/note_store/notes_metadata_list.rb
75
+ - lib/evernote/edam/note_store/sync_chunk.rb
76
+ - lib/evernote/edam/type/note.rb
77
+ - lib/evernote/edam/type/resource.rb
78
+ - lib/evernote/edam/type/shared_notebook.rb
79
+ - lib/evernote/edam/type/tag.rb
72
80
  - lib/evernote_oauth/client.rb
73
81
  - lib/evernote_oauth/note_store.rb
74
82
  - lib/evernote_oauth/shared_note_store.rb
83
+ - lib/evernote_oauth/store_attachable.rb
75
84
  - lib/evernote_oauth/thrift_client_delegation.rb
76
85
  - lib/evernote_oauth/user_store.rb
77
86
  - lib/evernote_oauth/version.rb
78
87
  - lib/evernote_oauth.rb
88
+ - lib/evernote_types.rb
79
89
  - spec/evernote_oauth/client_spec.rb
80
90
  - spec/evernote_oauth/note_store_spec.rb
81
91
  - spec/evernote_oauth/shared_note_store_spec.rb
82
92
  - spec/evernote_oauth/user_store_spec.rb
83
93
  - spec/spec_helper.rb
84
- homepage: http://github.com/rekotan/evernote_oauth
94
+ homepage: http://github.com/evernote/evernote-oauth-ruby
85
95
  licenses: []
86
96
  post_install_message:
87
97
  rdoc_options: