evertils-common 0.2.8.2 → 0.2.9

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: 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