evertils-common 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c4cc17e04641ec490aa5de9a35b33aa7502f9684
4
- data.tar.gz: 9032cdf13af63676c409263ad33403effef91a7a
3
+ metadata.gz: 802848f9bf8bcfb3aba2b79cb7d90cd037294e2d
4
+ data.tar.gz: 3036cfd81d6cb710203a10020e13495270204258
5
5
  SHA512:
6
- metadata.gz: e3c1737b5d15fb1adbd7fb840f0cea9e5b6af624574ca71f8961c83905e888e93d19cf24cd205216160395f2c8bfa730c4febcfcf96dc003781dd798a5e005e8
7
- data.tar.gz: c6f8021ea4040a8f0d399a0dad57c3431a970e781218dde5662fbb98d14e4317a9c97a50eec52c612630379fb138ce9b13b5979739bbdef729d7f97261ce7fbf
6
+ metadata.gz: 04cafceb90639c8149be97103211fb7d37cc92d406a56585af820edc229c737f95c0b2caef87ace0ba1cfb6a73c55fbaf205bbd4712819c2a190ef0ece6a6d34
7
+ data.tar.gz: 19c7427b1c0b941b7c7df7939c2d6b0a8c0eadc8da675aefba006d288a502fc945bd730cab9317a4086ede1791e534e2ae26b7abe5e9167d361bb7c336128db1
@@ -0,0 +1,118 @@
1
+ require 'evertils/common/authentication'
2
+
3
+ module Evertils
4
+ module Common
5
+ module Entity
6
+ class Note
7
+
8
+ def initialize
9
+ @evernote = Authentication.new.store
10
+ end
11
+
12
+ def create_from_yml(full_path)
13
+ begin
14
+ if File.exists? full_path
15
+ conf = YAML::load(File.open(full_path))
16
+ required = %w(title body)
17
+
18
+ if has_required_fields(conf, required)
19
+ create(conf['title'], conf['body'], conf['parent'])
20
+ else
21
+ raise ArgumentError, 'Configuration file is missing some required fields'
22
+ end
23
+ else
24
+ raise ArgumentError, "File not found: #{full_path}"
25
+ end
26
+ rescue ArgumentError => e
27
+ puts e.message
28
+ end
29
+ end
30
+
31
+ def create(title, body = template_contents, p_notebook_name = nil, file = nil, share_note = false, created_on = nil)
32
+ # final output
33
+ output = {}
34
+
35
+ # Create note object
36
+ our_note = ::Evernote::EDAM::Type::Note.new
37
+ our_note.resources = []
38
+ our_note.tagNames = []
39
+
40
+ # only join when required
41
+ if body.is_a? Array
42
+ body = body.join
43
+ end
44
+
45
+ # a file was requested, lets prepare it for storage
46
+ if !file.nil?
47
+ media_resource = ENML.new(file)
48
+ body.concat(media_resource.embeddable_element)
49
+ our_note.resources << media_resource.element
50
+ end
51
+
52
+ n_body = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
53
+ n_body += "<!DOCTYPE en-note SYSTEM \"http://xml.evernote.com/pub/enml2.dtd\">"
54
+ n_body += "<en-note>#{body}</en-note>"
55
+
56
+ # setup note properties
57
+ our_note.title = title
58
+ our_note.content = n_body
59
+ our_note.created = created_on if !created_on.nil?
60
+
61
+ nb = Entity::Notebook.new
62
+ parent_notebook = nb.find(p_notebook_name)
63
+
64
+ ## parent_notebook is optional; if omitted, default notebook is used
65
+ if parent_notebook.is_a? ::Evernote::EDAM::Type::Notebook
66
+ our_note.notebookGuid = parent_notebook.guid
67
+ end
68
+
69
+ ## Attempt to create note in Evernote account
70
+ begin
71
+ output[:note] = @evernote.createNote(Evertils::Common::EVERNOTE_DEVELOPER_TOKEN, our_note)
72
+
73
+ if share_note
74
+ shareKey = @evernote.shareNote(Evertils::Common::EVERNOTE_DEVELOPER_TOKEN, output[:note].guid)
75
+ output[:share_url] = "https://#{Evertils::Common::EVERNOTE_HOST}/shard/#{@model.shardId}/sh/#{output[:note].guid}/#{shareKey}"
76
+ end
77
+ rescue ::Evernote::EDAM::Error::EDAMUserException => edue
78
+ ## Something was wrong with the note data
79
+ ## See EDAMErrorCode enumeration for error code explanation
80
+ ## http://dev.evernote.com/documentation/reference/Errors.html#Enum_EDAMErrorCode
81
+ Notify.error "EDAMUserException: #{edue}\nCode #{edue.errorCode}: #{edue.parameter}"
82
+ rescue ::Evernote::EDAM::Error::EDAMNotFoundException => ednfe
83
+ ## Parent Notebook GUID doesn't correspond to an actual notebook
84
+ Notify.error "EDAMNotFoundException: Invalid parent notebook GUID"
85
+ end
86
+
87
+ # A parent notebook object exists, otherwise it was saved to the default
88
+ # notebook
89
+ if parent_notebook.is_a? ::Evernote::EDAM::Type::Notebook
90
+ Notify.success("#{parent_notebook.stack}/#{parent_notebook.name}/#{our_note.title} created")
91
+ else
92
+ Notify.success("DEFAULT_NOTEBOOK/#{our_note.title} created")
93
+ end
94
+
95
+ output
96
+ end
97
+
98
+ def exists?(name)
99
+ notes = Notes.new
100
+ notes.findAll(name).totalNotes > 0
101
+ end
102
+
103
+ def destroy(name)
104
+
105
+ end
106
+
107
+ private
108
+
109
+ def has_required_fields(hash, required)
110
+ hash.keys.each do |key|
111
+ required.include? key
112
+ end
113
+ end
114
+
115
+ end
116
+ end
117
+ end
118
+ end
@@ -0,0 +1,90 @@
1
+ require 'evertils/common/authentication'
2
+ require 'evertils/common/entity/notebooks'
3
+
4
+ module Evertils
5
+ module Common
6
+ module Entity
7
+ class Notebook
8
+
9
+ def initialize
10
+ @evernote = Authentication.new.store
11
+
12
+ self
13
+ end
14
+
15
+ def find(name)
16
+ notebooks = Notebooks.new.all
17
+
18
+ notebooks.each do |notebook|
19
+ if notebook.name == name.to_s.capitalize
20
+ @notebook = notebook
21
+ end
22
+ end
23
+
24
+ @notebook
25
+ end
26
+
27
+ def create_from_yml(full_path)
28
+ begin
29
+ if File.exists? full_path
30
+ conf = YAML::load(File.open(full_path))
31
+ required = %w(name children)
32
+
33
+ if has_required_fields(conf, required)
34
+ if !conf["children"].nil?
35
+ conf["children"].each do |name|
36
+ create(name, conf["name"])
37
+ end
38
+ end
39
+ else
40
+ raise ArgumentError, 'Configuration file is missing some required fields'
41
+ end
42
+ else
43
+ raise ArgumentError, "File not found: #{full_path}"
44
+ end
45
+ rescue ArgumentError => e
46
+ puts e.message
47
+ end
48
+ end
49
+
50
+ def create(name, stack = nil)
51
+ notebook = ::Evernote::EDAM::Type::Notebook.new
52
+ notebook.name = name
53
+
54
+ if !stack.nil?
55
+ notebook.stack = stack
56
+ notebook.name = "#{stack}/#{name}"
57
+ end
58
+
59
+ @evernote.createNotebook(Evertils::Common::EVERNOTE_DEVELOPER_TOKEN, notebook)
60
+ end
61
+
62
+ def destroy()
63
+
64
+ end
65
+
66
+ def notes(guid = nil)
67
+ filter = ::Evernote::EDAM::NoteStore::NoteFilter.new
68
+ filter.notebookGuid = @notebook.guid
69
+
70
+ result = ::Evernote::EDAM::NoteStore::NotesMetadataResultSpec.new
71
+ result.includeTitle = true
72
+ result.includeUpdated = true
73
+ result.includeTagGuids = true
74
+
75
+ notes = Notes.new
76
+ notes.find(nil, @notebook.guid)
77
+ end
78
+
79
+ private
80
+
81
+ def has_required_fields(hash, required)
82
+ hash.keys.each do |key|
83
+ required.include? key
84
+ end
85
+ end
86
+
87
+ end
88
+ end
89
+ end
90
+ end
@@ -0,0 +1,21 @@
1
+ require 'evertils/common/authentication'
2
+
3
+ module Evertils
4
+ module Common
5
+ module Entity
6
+ class Notebooks
7
+
8
+ def initialize
9
+ @evernote = Authentication.new.store
10
+
11
+ self
12
+ end
13
+
14
+ def all
15
+ @evernote.listNotebooks(Evertils::Common::EVERNOTE_DEVELOPER_TOKEN)
16
+ end
17
+
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,33 @@
1
+ require 'evertils/common/authentication'
2
+
3
+ module Evertils
4
+ module Common
5
+ module Entity
6
+ class Notes
7
+
8
+ def initialize
9
+ @evernote = Authentication.new.store
10
+
11
+ self
12
+ end
13
+
14
+ def findAll(title, notebook = nil)
15
+ filter = ::Evernote::EDAM::NoteStore::NoteFilter.new
16
+ filter.words = "intitle:#{title}" if title
17
+ filter.notebookGuid = notebook if notebook
18
+
19
+ @evernote.findNotes(Evertils::Common::EVERNOTE_DEVELOPER_TOKEN, filter, nil, 300)
20
+ end
21
+
22
+ def findOne(title, notebook = nil)
23
+ filter = ::Evernote::EDAM::NoteStore::NoteFilter.new
24
+ filter.words = "intitle:#{title}" if title
25
+ filter.notebookGuid = notebook if notebook
26
+
27
+ @evernote.findNotes(Evertils::Common::EVERNOTE_DEVELOPER_TOKEN, filter, nil, 1)
28
+ end
29
+
30
+ end
31
+ end
32
+ end
33
+ end
@@ -1,16 +1,17 @@
1
1
  require 'yaml'
2
- require 'evertils/common/authentication'
3
2
  require 'evertils/common/enml'
3
+ require 'evertils/common/results_helper'
4
+ require 'evertils/common/entity/notebooks'
5
+ require 'evertils/common/entity/notebook'
6
+ require 'evertils/common/entity/notes'
7
+ require 'evertils/common/entity/note'
4
8
 
5
9
  module Evertils
6
10
  module Common
7
11
  class Evernote
8
- def initialize
9
- @evernote = Evertils::Common::Authentication.new
10
- end
11
12
 
12
13
  def notebooks
13
- @evernote.store.listNotebooks(Evertils::Common::EVERNOTE_DEVELOPER_TOKEN)
14
+ Entity::Notebooks.new.all
14
15
  end
15
16
 
16
17
  def tags
@@ -18,219 +19,46 @@ module Evertils
18
19
  end
19
20
 
20
21
  def notebook_by_name(name)
21
- output = {}
22
- notebooks.each do |notebook|
23
- if notebook.name == name.to_s.capitalize
24
- output = notebook
25
- end
26
- end
27
-
28
- output
22
+ nb = Entity::Notebook.new
23
+ nb.find(name)
29
24
  end
30
25
 
31
26
  def notes_by_notebook(name)
32
- output = {}
33
- notebooks.each do |notebook|
34
- if notebook.name.to_s == name.capitalize.to_s
35
- filter = ::Evernote::EDAM::NoteStore::NoteFilter.new
36
- filter.notebookGuid = notebook.guid
37
-
38
- result = ::Evernote::EDAM::NoteStore::NotesMetadataResultSpec.new
39
- result.includeTitle = true
40
- result.includeUpdated = true
41
- result.includeTagGuids = true
42
-
43
- #output = @evernote.store.findNotesMetadata(Evertils::Common::EVERNOTE_DEVELOPER_TOKEN, filter, 0, 400, result)
44
- notes(nil, notebook.guid).notes.each do |note|
45
- output[note.guid] = @evernote.store.getNoteContent(Evertils::Common::EVERNOTE_DEVELOPER_TOKEN, note.guid)
46
- end
47
- end
48
- end
49
-
50
- output
51
- end
52
-
53
- def notebooks_by_stack(stack)
54
- output = {}
55
- notebooks.each do |notebook|
56
- if notebook.stack == stack
57
- #output[notebook.name] = []
58
-
59
- filter = ::Evernote::EDAM::NoteStore::NoteFilter.new
60
- filter.notebookGuid = notebook.guid
61
-
62
- result = ::Evernote::EDAM::NoteStore::NotesMetadataResultSpec.new
63
- result.includeTitle = true
64
- result.includeUpdated = true
65
- result.includeTagGuids = true
66
-
67
- notes = @evernote.store.findNotesMetadata(Evertils::Common::EVERNOTE_DEVELOPER_TOKEN, filter, 0, 400, result)
68
- output[notebook.name] = notes
69
- end
70
- end
71
-
72
- output
27
+ nb = Entity::Notebook.new
28
+ nb.find(name)
29
+ nb.notes
73
30
  end
74
31
 
75
32
  def create_stack_from(full_path)
76
- if File.exists? full_path
77
- conf = YAML::load(File.open(full_path))
78
- required = %w(name children)
79
-
80
- if has_required_fields(conf, required)
81
- if !conf["children"].nil?
82
- conf["children"].each do |name|
83
- create_notebook(name, conf["name"])
84
- end
85
- end
86
- else
87
- raise ArgumentError, 'Configuration file is missing some required fields'
88
- end
89
- else
90
- raise ArgumentError, "File not found: #{full_path}"
91
- end
33
+ nb = Entity::Notebook.new
34
+ nb.create_from_yml(full_path)
92
35
  end
93
36
 
94
37
  def create_note_from(full_path)
95
- if File.exists? full_path
96
- conf = YAML::load(File.open(full_path))
97
- required = %w(title body)
98
-
99
- if has_required_fields(conf, required)
100
- create_note(conf['title'], conf['body'], conf['parent'])
101
- else
102
- raise ArgumentError, 'Configuration file is missing some required fields'
103
- end
104
- else
105
- raise ArgumentError, "File not found: #{full_path}"
106
- end
107
- end
108
-
109
- def create_stack(name)
110
- create_notebook(name)
38
+ note = Entity::Note.new
39
+ note.create_from_yml(full_path)
111
40
  end
112
41
 
113
42
  def create_notebook(name, stack = nil)
114
- notebook = ::Evernote::EDAM::Type::Notebook.new
115
- notebook.name = name
116
-
117
- if !stack.nil?
118
- notebook.stack = stack
119
- notebook.name = "#{stack}/#{name}"
120
- end
121
-
122
- @evernote.store.createNotebook(Evertils::Common::EVERNOTE_DEVELOPER_TOKEN, notebook)
43
+ nb = Entity::Notebook.new
44
+ nb.create(name, stack)
123
45
  end
124
46
 
125
47
  def find_note(title_filter = nil, notebook_filter = nil)
126
- filter = ::Evernote::EDAM::NoteStore::NoteFilter.new
127
- filter.words = "intitle:#{title_filter}" if title_filter
128
- filter.notebookGuid = notebook_filter if notebook_filter
129
-
130
- @evernote.store.findNotes(Evertils::Common::EVERNOTE_DEVELOPER_TOKEN, filter, nil, 1)
131
- end
132
-
133
- def notes(title_filter = nil, notebook_filter = nil)
134
- filter = ::Evernote::EDAM::NoteStore::NoteFilter.new
135
- filter.words = "intitle:#{title_filter}" if title_filter
136
- filter.notebookGuid = notebook_filter if notebook_filter
137
-
138
- @evernote.store.findNotes(Evertils::Common::EVERNOTE_DEVELOPER_TOKEN, filter, nil, 300)
48
+ note = Entity::Note.new
49
+ note.find(title_filter, notebook_filter)
139
50
  end
140
51
 
141
52
  def note_exists(requested_date = DateTime.now)
142
- results = Helper::Results.new
143
- tmpl = date_templates(requested_date)
144
- template = tmpl[command]
145
- note = find_note(template)
146
-
147
- # Evernote's search matches things like the following, so we have to get
148
- # more specific
149
- # Daily Log [July 3 - F] == Daily Log [July 10 - F]
150
- if note.totalNotes > 0
151
- note.notes.each do |n|
152
- results.add(n.title != template)
153
- end
154
- else
155
- results.add(true)
156
- end
157
-
158
- results.should_eval_to(false)
53
+ note = Note.new
54
+ note.exists? nil, requested_date
159
55
  end
160
56
 
161
57
  def create_note(title, body = template_contents, p_notebook_name = nil, file = nil, share_note = false, created_on = nil)
162
- # final output
163
- output = {}
164
-
165
- # Create note object
166
- our_note = ::Evernote::EDAM::Type::Note.new
167
- our_note.resources = []
168
- our_note.tagNames = []
169
-
170
- # only join when required
171
- if body.is_a? Array
172
- body = body.join
173
- end
174
-
175
- # a file was requested, lets prepare it for storage
176
- if !file.nil?
177
- media_resource = ENML.new(file)
178
- body.concat(media_resource.embeddable_element)
179
- our_note.resources << media_resource.element
180
- end
181
-
182
- n_body = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
183
- n_body += "<!DOCTYPE en-note SYSTEM \"http://xml.evernote.com/pub/enml2.dtd\">"
184
- n_body += "<en-note>#{body}</en-note>"
185
-
186
- # setup note properties
187
- our_note.title = title
188
- our_note.content = n_body
189
- our_note.created = created_on if !created_on.nil?
190
-
191
- parent_notebook = notebook_by_name(p_notebook_name)
192
-
193
- ## parent_notebook is optional; if omitted, default notebook is used
194
- if parent_notebook.is_a? ::Evernote::EDAM::Type::Notebook
195
- our_note.notebookGuid = parent_notebook.guid
196
- end
197
-
198
- ## Attempt to create note in Evernote account
199
- begin
200
- output[:note] = @evernote.store.createNote(Evertils::Common::EVERNOTE_DEVELOPER_TOKEN, our_note)
201
-
202
- if share_note
203
- shareKey = @evernote.store.shareNote(Evertils::Common::EVERNOTE_DEVELOPER_TOKEN, output[:note].guid)
204
- output[:share_url] = "https://#{Evertils::Common::EVERNOTE_HOST}/shard/#{@model.shardId}/sh/#{output[:note].guid}/#{shareKey}"
205
- end
206
- rescue ::Evernote::EDAM::Error::EDAMUserException => edue
207
- ## Something was wrong with the note data
208
- ## See EDAMErrorCode enumeration for error code explanation
209
- ## http://dev.evernote.com/documentation/reference/Errors.html#Enum_EDAMErrorCode
210
- Notify.error "EDAMUserException: #{edue}\nCode #{edue.errorCode}: #{edue.parameter}"
211
- rescue ::Evernote::EDAM::Error::EDAMNotFoundException => ednfe
212
- ## Parent Notebook GUID doesn't correspond to an actual notebook
213
- Notify.error "EDAMNotFoundException: Invalid parent notebook GUID"
214
- end
215
-
216
- # A parent notebook object exists, otherwise it was saved to the default
217
- # notebook
218
- if parent_notebook.is_a? ::Evernote::EDAM::Type::Notebook
219
- Notify.success("#{parent_notebook.stack}/#{parent_notebook.name}/#{our_note.title} created")
220
- else
221
- Notify.success("DEFAULT_NOTEBOOK/#{our_note.title} created")
222
- end
223
-
224
- output
58
+ note = Note.new
59
+ note.create(title, body, p_notebook_name, file, share_note, created_on)
225
60
  end
226
61
 
227
- private
228
-
229
- def has_required_fields(hash, required)
230
- hash.keys.each do |key|
231
- required.include? key
232
- end
233
- end
234
62
  end
235
63
  end
236
64
  end
@@ -0,0 +1,22 @@
1
+ module Evertils
2
+ module Common
3
+ class Results
4
+ attr_reader :bucket
5
+
6
+ def initialize
7
+ @bucket = []
8
+ @bucket
9
+ end
10
+
11
+ # Add a result for processing
12
+ def add(result)
13
+ @bucket.push(result.to_bool)
14
+ result.to_bool
15
+ end
16
+
17
+ def should_eval_to(pass_value)
18
+ @bucket.all? == pass_value
19
+ end
20
+ end
21
+ end
22
+ end
@@ -1,5 +1,5 @@
1
1
  module Evertils
2
2
  module Common
3
- VERSION = "0.2.0"
3
+ VERSION = "0.2.1"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: evertils-common
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Priebe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-15 00:00:00.000000000 Z
11
+ date: 2015-12-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -86,7 +86,12 @@ files:
86
86
  - lib/evertils/common.rb
87
87
  - lib/evertils/common/authentication.rb
88
88
  - lib/evertils/common/enml.rb
89
+ - lib/evertils/common/entity/note.rb
90
+ - lib/evertils/common/entity/notebook.rb
91
+ - lib/evertils/common/entity/notebooks.rb
92
+ - lib/evertils/common/entity/notes.rb
89
93
  - lib/evertils/common/evernote.rb
94
+ - lib/evertils/common/results_helper.rb
90
95
  - lib/evertils/common/version.rb
91
96
  homepage: http://rubygems.org/gems/evertils-common
92
97
  licenses: