Skip to content

Commit 9c3eaee

Browse files
committed
Refactor EvernoteAuthorizer
1 parent 5b86567 commit 9c3eaee

File tree

2 files changed

+36
-23
lines changed

2 files changed

+36
-23
lines changed

lib/ever2boost/cli.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ class CLI < Thor
88
desc "import", "import from evernote"
99
def import
1010
developer_token = ask('DEVELOPER_TOKEN:')
11-
EvernoteAuthorizer.new(developer_token).fetch_notes(DEFAULT_OUTPUT_DIR)
11+
EvernoteAuthorizer.new(developer_token).generate_cson(DEFAULT_OUTPUT_DIR)
1212
end
1313

1414
class << self

lib/ever2boost/evernote_authorizer.rb

Lines changed: 35 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
require 'evernote-thrift'
22
require 'ever2boost/note'
33
require 'ever2boost/note_list'
4-
require 'pry-byebug'
54

65
module Ever2boost
76
class EvernoteAuthorizer
@@ -22,35 +21,49 @@ def initialize(developer_token)
2221
@note_store = note_store
2322
end
2423

25-
def fetch_notes(output_dir)
26-
FileUtils.mkdir_p(output_dir) unless FileTest.exist?(output_dir)
24+
def fetch_notebook_list
25+
self.note_store.listNotebooks(self.developer_token)
26+
end
27+
28+
def notebook_guids
29+
self.fetch_notebook_list.map(&:guid)
30+
end
31+
32+
def notebook_list
33+
guids = self.notebook_guids
34+
self.fetch_notebook_list.map { |nl| Ever2boost::NoteList.new(title: nl.name, hash: nl.hash, guid: nl.guid) }
35+
end
2736

28-
note_store = self.note_store
29-
notebook_list = note_store.listNotebooks(self.developer_token)
30-
notebook_guids = notebook_list.map(&:guid)
31-
lists = notebook_list.map { |nl| Ever2boost::NoteList.new(title: nl.name, hash: hash, guid: nl.guid) }
32-
Ever2boost::JsonGenerator.generate_boostnote_json(lists, output_dir)
37+
def number_of_note(filter)
38+
note_counts_hash = self.note_store.findNoteCounts(self.developer_token, filter, true).notebookCounts
39+
note_counts_hash.values.last || 0
40+
end
3341

34-
notebook_guids.each do |notebook_guid|
35-
filter = Evernote::EDAM::NoteStore::NoteFilter.new
36-
filter.notebookGuid = notebook_guid
42+
def fetch_notes(filter)
43+
spec = Evernote::EDAM::NoteStore::NotesMetadataResultSpec.new(includeTitle: true, includeNotebookGuid: true)
3744

38-
spec = Evernote::EDAM::NoteStore::NotesMetadataResultSpec.new(includeTitle: true, includeNotebookGuid: true)
45+
# get latest 250 notes
46+
# TODO: display message like "ignored first #{(number_of_notes - 250).to_s} notes due to EvernoteAPI access limitation" if number_of_notes > 250
47+
start_index = self.number_of_note(filter) > 250 ? self.number_of_note(filter) - 250 : 0
48+
self.note_store.findNotesMetadata(self.developer_token, filter, start_index, 15, spec)
49+
end
50+
51+
# Download the all of notes fron Evernote and generate Boostnote storage from it
52+
# TODO: move this method to CLI
53+
def import(output_dir)
54+
FileUtils.mkdir_p(output_dir) unless FileTest.exist?(output_dir)
3955

40-
# get latest 250 notes
41-
note_counts_hash = note_store.findNoteCounts(self.developer_token, filter, true).notebookCounts
42-
number_of_notes = note_counts_hash.values.last || 0
43-
# TODO: display message like "ignored first #{(number_of_notes - 250).to_s} notes due to EvernoteAPI access limitation" if number_of_notes > 250
44-
start_index = number_of_notes > 250 ? number_of_notes - 250 : 0
45-
note_list = note_store.findNotesMetadata(self.developer_token, filter, start_index, 15, spec)
56+
Ever2boost::JsonGenerator.generate_boostnote_json(self.notebook_list, output_dir)
4657

47-
note_guids = note_list.notes.map(&:guid)
58+
self.notebook_guids.each do |notebook_guid|
59+
filter = Evernote::EDAM::NoteStore::NoteFilter.new(notebookGuid: notebook_guid)
60+
note_guids = self.fetch_notes(filter).notes.map(&:guid)
4861
# TODO: assign the booleans
49-
en_notes = note_guids.map {|note_guid| note_store.getNote(self.developer_token, note_guid, true, true, false, false)}
62+
en_notes = note_guids.map {|note_guid| self.note_store.getNote(self.developer_token, note_guid, true, true, false, false)}
5063
notes = en_notes.map {|note| Note.new(title: note.title, content: note.content, notebook_guid: note.notebookGuid)}
5164
notes.each do |note|
52-
lists.each do |list|
53-
# TODO: break if note found
65+
self.notebook_list.each do |list|
66+
# TODO: break if note not found
5467
CsonGenerator.generate(list.hash, note, output_dir) if list.guid == note.notebook_guid
5568
end
5669
end

0 commit comments

Comments
 (0)