evertils-common 0.2.8.2 → 0.2.9

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 96121746b417fad17240462ed1a4a4f0341c91b7
4
- data.tar.gz: 960e7deaa5084e9f2011ae7b92f34fdfcfcbc187
3
+ metadata.gz: 33ead3b9f1561bc3a2b5de59335fc9e7251c210b
4
+ data.tar.gz: 29a60ff3a7ed7446b9d5b92ec968144fe9d302fe
5
5
  SHA512:
6
- metadata.gz: 6c84832f8afcacfcdf834ac59953a2f8ae0138623ac3e1fb53029373b22f2d2b408559a16cd84e407f55ff2a81ac45199ffe832ea4e9da3a1acb8c6762ecee07
7
- data.tar.gz: 1e9cba8d9cba304c7902e9187782b8ae073df02bb1fcf33aedb2971a586572ac1deeb0ecd7ba69ff96568364428b5813c198b0726798628b250ac127dbc48409
6
+ metadata.gz: 0102d8cb3bc70c7d1ad2864451f0db431eab0f9d9b0e70ae12cf0a8a31879694b35f973bebd91148280773f94f2b1209cc3ce317b61a0062f9ecf8234f89bc05
7
+ data.tar.gz: cc23fd26183b67cbfdd00170b5726322eb6a104c30ffc6e1b649926be250b742c4d52c1f70b331c3d0d1e28b767c2563c963405335d66ef5adba14bacb03bfdb
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # Evertils::Common
2
2
 
3
+ [![Code Climate](https://codeclimate.com/github/aapis/evertils-common/badges/gpa.svg)](https://codeclimate.com/github/aapis/evertils-common)
4
+
3
5
  Evertils::Common is an abstraction library for interacting with the Evernote API.
4
6
 
5
7
  ## Installation
@@ -3,6 +3,48 @@ module Evertils
3
3
  module Converter
4
4
  class YamlToEnml < Converter::Base
5
5
 
6
+ #
7
+ # @since 0.2.9
8
+ def from_file(path)
9
+ contents = File.open(path, "rb") { |io| io.read }
10
+ obj = YAML::load(contents)
11
+
12
+ builder(obj)
13
+ end
14
+
15
+ #
16
+ # @since 0.2.9
17
+ def from_string(yaml)
18
+ obj = YAML::load(yaml)
19
+
20
+ builder(obj)
21
+ end
22
+
23
+ private
24
+
25
+ #
26
+ # @since 0.2.9
27
+ def builder(obj)
28
+ # hardcoding XML here because it's quick/easy
29
+ enml = '<?xml version="1.0" encoding="UTF-8"?>'
30
+ enml += '<!DOCTYPE "en-note" SYSTEM "http://xml.evernote.com/pub/enml2.dtd">'
31
+ enml += '<en-note>'
32
+ obj.each do |k, v|
33
+ if v.is_a? Array
34
+ enml += "<p>#{k}</p>"
35
+ enml += "<ul>"
36
+ v.each do |child|
37
+ enml += "<li>#{child}</li>"
38
+ end
39
+ enml += "</ul>"
40
+ else
41
+ enml += "<p>#{k}: #{v}</p>"
42
+ end
43
+ end
44
+ enml += '</en-note>'
45
+ enml
46
+ end
47
+
6
48
  end
7
49
  end
8
50
  end
@@ -9,12 +9,6 @@ module Evertils
9
9
  puts "Deprecated as of #{version}"
10
10
  end
11
11
 
12
- #
13
- # @since 0.2.8
14
- def deprecation_notice(version)
15
- puts "Deprecated as of #{version}"
16
- end
17
-
18
12
  end
19
13
  end
20
14
  end
@@ -16,19 +16,17 @@ module Evertils
16
16
  private
17
17
 
18
18
  def enml_element
19
- if @file
20
- read_file = File.open(@file, 'rb') { |io| io.read }
19
+ read_file = File.open(@file, 'rb') { |io| io.read }
21
20
 
22
- el = ::Evernote::EDAM::Type::Resource.new()
23
- el.mime = MIME::Types.type_for(@file)[0].content_type
24
- el.data = ::Evernote::EDAM::Type::Data.new()
25
- el.data.size = read_file.size
26
- el.data.bodyHash = Digest::MD5.hexdigest(read_file)
27
- el.data.body = read_file
28
- el.attributes = ::Evernote::EDAM::Type::ResourceAttributes.new()
29
- el.attributes.fileName = @file # temporary for now, the actual file name
30
- el
31
- end
21
+ el = ::Evernote::EDAM::Type::Resource.new()
22
+ el.mime = MIME::Types.type_for(@file)[0].content_type
23
+ el.data = ::Evernote::EDAM::Type::Data.new()
24
+ el.data.size = read_file.size
25
+ el.data.bodyHash = Digest::MD5.hexdigest(read_file)
26
+ el.data.body = read_file
27
+ el.attributes = ::Evernote::EDAM::Type::ResourceAttributes.new()
28
+ el.attributes.fileName = @file # temporary for now, the actual file name
29
+ el
32
30
  end
33
31
  end
34
32
  end
@@ -3,9 +3,11 @@ module Evertils
3
3
  module Entity
4
4
  class Note < Entity::Base
5
5
 
6
+ #
7
+ # @since 0.2.0
6
8
  def create_from_yml(full_path)
7
9
  begin
8
- if File.exists? full_path
10
+ if File.exist? full_path
9
11
  conf = YAML::load(File.open(full_path))
10
12
  required = %w(title body)
11
13
 
@@ -22,7 +24,11 @@ module Evertils
22
24
  end
23
25
  end
24
26
 
27
+ #
28
+ # @since 0.2.0
25
29
  def create(title, body, p_notebook_name = nil, file = nil, share_note = false, created_on = nil)
30
+ @entity = nil
31
+
26
32
  # final output
27
33
  output = {}
28
34
 
@@ -61,71 +67,86 @@ module Evertils
61
67
  if !p_notebook_name.is_a? ::Evernote::EDAM::Type::Notebook
62
68
  nb = Entity::Notebook.new
63
69
  parent_notebook = nb.find(p_notebook_name)
64
- parent_notebook = @evernote.call(:getDefaultNotebook) if parent_notebook.nil?
70
+ parent_notebook = nb.default if parent_notebook.nil?
65
71
  end
66
72
 
67
73
  # parent_notebook is optional; if omitted, default notebook is used
68
- our_note.notebookGuid = parent_notebook.guid
74
+ our_note.notebookGuid = parent_notebook.prop(:guid)
69
75
 
70
76
  # Attempt to create note in Evernote account
71
77
  begin
72
- output[:note] = @evernote.call(:createNote, our_note)
73
-
74
- if share_note
75
- shareKey = @evernote.call(:shareNote, output[:note].guid)
76
- output[:share_url] = "https://#{Evertils::Common::EVERNOTE_HOST}/shard/#{@model.shardId}/sh/#{output[:note].guid}/#{shareKey}"
77
- end
78
+ @entity = @evernote.call(:createNote, our_note)
79
+ share if share_note
78
80
  rescue ::Evernote::EDAM::Error::EDAMUserException => edue
79
81
  ## Something was wrong with the note data
80
82
  ## See EDAMErrorCode enumeration for error code explanation
81
83
  ## http://dev.evernote.com/documentation/reference/Errors.html#Enum_EDAMErrorCode
82
84
  Notify.error "EDAMUserException: #{edue}\nCode #{edue.errorCode}: #{edue.parameter}"
83
- rescue ::Evernote::EDAM::Error::EDAMNotFoundException => ednfe
85
+ rescue ::Evernote::EDAM::Error::EDAMNotFoundException
84
86
  ## Parent Notebook GUID doesn't correspond to an actual notebook
85
87
  Notify.error "EDAMNotFoundException: Invalid parent notebook GUID"
86
88
  end
87
89
 
88
- Notify.success("#{parent_notebook.stack}/#{parent_notebook.name}/#{our_note.title} created")
90
+ Notify.success("#{parent_notebook.prop(:stack)}/#{parent_notebook.prop(:name)}/#{our_note.title} created")
89
91
 
90
- output
92
+ self if @entity
91
93
  end
92
94
 
95
+ #
96
+ # @since 0.2.0
93
97
  def exists?(name)
94
- # notes = Notes.new
95
- # notes.find_all(name).size > 0
96
98
  return true if !find(name).nil?
97
99
  false
98
100
  end
99
101
 
100
- def destroy(name)
101
- note = find(name).guid
102
+ #
103
+ # @since 0.2.0
104
+ def destroy
105
+ @evernote.call(:deleteNote, @entity.guid)
106
+ end
102
107
 
103
- @evernote.call(:deleteNote, note)
108
+ #
109
+ # @since 0.2.9
110
+ def expunge!
111
+ @evernote.call(:expungeNote, @entity.guid)
104
112
  end
105
113
 
106
- def expunge(name)
107
- note = find(name).guid
114
+ #
115
+ # @since 0.2.0
116
+ def expunge
117
+ deprecation_notice('0.2.9')
108
118
 
109
- @evernote.call(:expungeNote, note)
119
+ @evernote.call(:expungeNote, @entity.guid)
110
120
  end
111
121
 
112
122
  #
113
- # @since 0.2.8
114
- def share(name)
115
- note = find(name).guid
123
+ # @since 0.2.9
124
+ def move_to(notebook)
125
+ nb = Evertils::Common::Entity::Notebook.new
126
+ target = nb.find(notebook)
127
+
128
+ @entity.notebookGuid = target.prop(:guid)
116
129
 
117
- @evernote.call(:shareNote, note)
130
+ @evernote.call(:updateNote, @entity)
118
131
  end
119
132
 
120
133
  #
121
134
  # @since 0.2.8
122
- def unshare(name)
123
- note = find(name).guid
135
+ def share
136
+ @evernote.call(:shareNote, @entity.guid)
137
+ end
124
138
 
125
- @evernote.call(:stopSharingNote, note)
139
+ #
140
+ # @since 0.2.8
141
+ def unshare
142
+ @evernote.call(:stopSharingNote, @entity.guid)
126
143
  end
127
144
 
145
+ #
146
+ # @since 0.2.0
128
147
  def find(name)
148
+ @entity = nil
149
+
129
150
  filter = ::Evernote::EDAM::NoteStore::NoteFilter.new
130
151
  filter.words = name
131
152
 
@@ -135,65 +156,12 @@ module Evertils
135
156
  result = @evernote.call(:findNotesMetadata, filter, 0, 1, spec)
136
157
 
137
158
  if result.totalNotes > 0
138
- return result.notes[0]
159
+ @entity = result.notes[0]
139
160
  end
140
- end
141
- alias_method :find_by_name, :find
142
-
143
- def find_by_date_range(start, finish = DateTime.now, period = :created)
144
- filter = ::Evernote::EDAM::NoteStore::NoteFilter.new
145
- filter.words = "#{period}:year-#{year_diff(start.year)}"
146
- filter.order = 1
147
-
148
- spec = ::Evernote::EDAM::NoteStore::NotesMetadataResultSpec.new
149
- spec.includeTitle = true
150
- spec.includeUpdated = true
151
- spec.includeCreated = true
152
161
 
153
- pool = @evernote.call(:findNotesMetadata, filter, 0, 300, spec)
154
- notes_by_date = []
155
-
156
- pool.notes.each do |note|
157
- note_datetime = DateTime.strptime(note.send(period).to_s[0...-3], '%s')
158
-
159
- notes_by_date << note if note_datetime.strftime('%m-%d-%Y') < finish.strftime('%m-%d-%Y') && note_datetime.strftime('%m-%d-%Y') > start.strftime('%m-%d-%Y')
160
- end
161
-
162
- notes_by_date
163
- end
164
-
165
- def find_by_date(date, period = :created)
166
- filter = ::Evernote::EDAM::NoteStore::NoteFilter.new
167
- filter.words = "#{period}:year-#{year_diff(date.year)}"
168
- filter.order = 1
169
-
170
- spec = ::Evernote::EDAM::NoteStore::NotesMetadataResultSpec.new
171
- spec.includeTitle = true
172
- spec.includeUpdated = true
173
- spec.includeCreated = true
174
-
175
- pool = @evernote.call(:findNotesMetadata, filter, 0, 300, spec)
176
- notes_by_date = []
177
-
178
- pool.notes.each do |note|
179
- note_datetime = DateTime.strptime(note.send(period).to_s[0...-3], '%s')
180
-
181
- notes_by_date << note if note_datetime.strftime('%m-%d-%Y') == date.strftime('%m-%d-%Y')
182
- end
183
-
184
- notes_by_date
185
- end
186
-
187
- private
188
-
189
- def year_diff(start_year)
190
- curr_year = DateTime.now.year
191
- diff = curr_year - start_year
192
-
193
- return 1 if diff == 0 || start_year > curr_year
194
-
195
- diff
162
+ self if @entity
196
163
  end
164
+ alias_method :find_by_name, :find
197
165
 
198
166
  end
199
167
  end
@@ -6,19 +6,21 @@ module Evertils
6
6
  class Notebook < Entity::Base
7
7
 
8
8
  def find(name)
9
- @notebook = nil
9
+ @entity = nil
10
10
  notebooks = Notebooks.new.all
11
11
 
12
12
  notebooks.each do |notebook|
13
13
  if notebook.name == name.to_s
14
- @notebook = notebook
14
+ @entity = notebook
15
15
  end
16
16
  end
17
17
 
18
- @notebook
18
+ self if @entity
19
19
  end
20
20
 
21
21
  def create(name, stack = nil)
22
+ @entity = nil
23
+
22
24
  notebook = ::Evernote::EDAM::Type::Notebook.new
23
25
  notebook.name = name
24
26
 
@@ -27,21 +29,33 @@ module Evertils
27
29
  notebook.name = "#{stack}/#{name}"
28
30
  end
29
31
 
30
- @evernote.call(:createNotebook, notebook)
32
+ @entity = @evernote.call(:createNotebook, notebook)
33
+
34
+ self if @entity
35
+ end
36
+
37
+ def default
38
+ @entity = @evernote.call(:getDefaultNotebook)
39
+
40
+ self if @entity
41
+ end
42
+
43
+ def expunge!
44
+ @evernote.call(:expungeNotebook, @entity.guid)
31
45
  end
32
46
 
33
- def expunge(name)
34
- nb = find(name)
47
+ def expunge
48
+ deprecation_notice('0.2.9')
35
49
 
36
- @evernote.call(:expungeNotebook, nb.guid)
50
+ @evernote.call(:expungeNotebook, @entity.guid)
37
51
  end
38
52
 
39
- def notes(guid = nil)
53
+ def notes
40
54
  filter = ::Evernote::EDAM::NoteStore::NoteFilter.new
41
- filter.notebookGuid = @notebook.guid
55
+ filter.notebookGuid = @entity.guid
42
56
 
43
57
  notes = Notes.new
44
- notes.find(nil, @notebook.guid)
58
+ notes.find(nil, @entity.guid)
45
59
  end
46
60
 
47
61
  end
@@ -27,6 +27,82 @@ module Evertils
27
27
  response.notes
28
28
  end
29
29
 
30
+ def find_by_tag(tag_name)
31
+ filter = ::Evernote::EDAM::NoteStore::NoteFilter.new
32
+ filter.words = "tag:#{tag_name}"
33
+
34
+ spec = ::Evernote::EDAM::NoteStore::NotesMetadataResultSpec.new
35
+ spec.includeTitle = true
36
+
37
+ response = @evernote.call(:findNotesMetadata, filter, nil, 300, spec)
38
+ response.notes
39
+ end
40
+
41
+ #
42
+ # @since 0.2.9
43
+ def find_by_date_range(start, finish = DateTime.now, period = :created)
44
+ filter = ::Evernote::EDAM::NoteStore::NoteFilter.new
45
+ filter.words = "#{period}:year-#{year_diff(start.year)}"
46
+ filter.order = 1
47
+
48
+ spec = ::Evernote::EDAM::NoteStore::NotesMetadataResultSpec.new
49
+ spec.includeTitle = true
50
+ spec.includeUpdated = true
51
+ spec.includeCreated = true
52
+
53
+ pool = @evernote.call(:findNotesMetadata, filter, 0, 300, spec)
54
+ notes_by_date = []
55
+
56
+ pool.notes.each do |note|
57
+ note_datetime = note_date(note, period)
58
+
59
+ notes_by_date << note if note_datetime.strftime('%m-%d-%Y') < finish.strftime('%m-%d-%Y') && note_datetime.strftime('%m-%d-%Y') > start.strftime('%m-%d-%Y')
60
+ end
61
+
62
+ notes_by_date
63
+ end
64
+
65
+ #
66
+ # @since 0.2.9
67
+ def find_by_date(date, period = :created)
68
+ filter = ::Evernote::EDAM::NoteStore::NoteFilter.new
69
+ filter.words = "#{period}:year-#{year_diff(date.year)}"
70
+ filter.order = 1
71
+
72
+ spec = ::Evernote::EDAM::NoteStore::NotesMetadataResultSpec.new
73
+ spec.includeTitle = true
74
+ spec.includeUpdated = true
75
+ spec.includeCreated = true
76
+
77
+ pool = @evernote.call(:findNotesMetadata, filter, 0, 300, spec)
78
+ notes_by_date = []
79
+
80
+ pool.notes.each do |note|
81
+ note_datetime = note_date(note, period)
82
+
83
+ notes_by_date << note if note_datetime.strftime('%m-%d-%Y') == date.strftime('%m-%d-%Y')
84
+ end
85
+
86
+ notes_by_date
87
+ end
88
+
89
+ private
90
+
91
+ #
92
+ # @since 0.2.9
93
+ def year_diff(start_year)
94
+ curr_year = DateTime.now.year
95
+ diff = curr_year - start_year
96
+
97
+ return 1 if diff == 0 || start_year > curr_year
98
+
99
+ diff
100
+ end
101
+
102
+ def note_date(note, period)
103
+ DateTime.strptime(note.send(period).to_s[0...-3], '%s')
104
+ end
105
+
30
106
  end
31
107
  end
32
108
  end
@@ -7,7 +7,7 @@ module Evertils
7
7
  begin
8
8
  nb = Notebook.new
9
9
 
10
- if File.exists? full_path
10
+ if File.exist? full_path
11
11
  conf = YAML::load(File.open(full_path))
12
12
  required = %w(name children)
13
13
 
@@ -4,26 +4,33 @@ module Evertils
4
4
  class Tag < Entity::Base
5
5
 
6
6
  def find(name)
7
- @tag = nil
7
+ @entity = nil
8
8
  tags = Tags.new.all
9
9
 
10
10
  tags.each do |tag|
11
11
  if tag.name == name.to_s
12
- @tag = tag
12
+ @entity = tag
13
13
  end
14
14
  end
15
15
 
16
- @tag
16
+ self if @entity
17
17
  end
18
18
 
19
19
  def create(name)
20
20
  tag = ::Evernote::EDAM::Type::Tag.new
21
21
  tag.name = name
22
22
 
23
- @evernote.call(:createTag, tag)
23
+ @entity = @evernote.call(:createTag, tag)
24
+
25
+ self if @entity
26
+ end
27
+
28
+ def expunge!
29
+ @evernote.call(:expungeTag, @entity.guid)
24
30
  end
25
31
 
26
32
  def expunge(name)
33
+ deprecation_notice('0.2.9')
27
34
  tag = find(name)
28
35
 
29
36
  @evernote.call(:expungeTag, tag.guid)
@@ -24,20 +24,22 @@ module Evertils
24
24
 
25
25
  #
26
26
  # @since 0.2.8
27
- def start_of_day(date = nil)
28
- date = ::Time.now unless date
29
-
27
+ def start_of_day(date = ::Time.now)
30
28
  ::Time.mktime(date.year, date.month, date.day, 12, 0, 0, 0, 0).to_datetime
31
29
  end
32
30
 
33
31
  #
34
32
  # @since 0.2.8
35
- def end_of_day(date = nil)
36
- date = ::Time.now unless date
37
-
33
+ def end_of_day(date = ::Time.now)
38
34
  ::Time.mktime(date.year, date.month, date.day, 23, 59, 59, 0).to_datetime
39
35
  end
40
36
 
37
+ #
38
+ # @since 0.2.9
39
+ def prop(name)
40
+ @entity.send(name)
41
+ end
42
+
41
43
  end
42
44
  end
43
45
  end
@@ -11,15 +11,19 @@ module Evertils
11
11
  module Query
12
12
  class Backup < Query::Base
13
13
 
14
- attr_accessor :note
15
-
16
14
  #
17
15
  # @since 0.2.8
18
16
  def files(*files)
19
17
  date = DateTime.now
20
- note = Entity::Note.new
18
+ nm = Entity::Note.new
19
+
20
+ @entity = nm.create("Backup: #{date}", '', 'Backup', files)
21
+ end
21
22
 
22
- note.create("Backup: #{date.to_s}", '', 'Backup', files)
23
+ #
24
+ # @since 0.2.9
25
+ def expunge!
26
+ @entity.expunge!
23
27
  end
24
28
 
25
29
  end
@@ -1,7 +1,7 @@
1
1
  module Evertils
2
2
  module Common
3
3
 
4
- VERSION = "0.2.8.2"
4
+ VERSION = "0.2.9"
5
5
 
6
6
  end
7
7
  end
@@ -12,6 +12,7 @@ require 'evertils/common/version'
12
12
  require 'evertils/common/query/backup'
13
13
  require 'evertils/common/query/simple'
14
14
  require 'evertils/common/query/time'
15
+ require 'evertils/common/converter/yaml_to_enml'
15
16
 
16
17
  module Evertils
17
18
  module Common
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: evertils-common
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.8.2
4
+ version: 0.2.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Priebe