1
1
require 'evernote-thrift'
2
2
require 'ever2boost/note'
3
3
require 'ever2boost/note_list'
4
- require 'pry-byebug'
5
4
6
5
module Ever2boost
7
6
class EvernoteAuthorizer
@@ -22,35 +21,49 @@ def initialize(developer_token)
22
21
@note_store = note_store
23
22
end
24
23
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
27
36
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
33
41
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 )
37
44
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 )
39
55
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 )
46
57
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 )
48
61
# 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 ) }
50
63
notes = en_notes . map { |note | Note . new ( title : note . title , content : note . content , notebook_guid : note . notebookGuid ) }
51
64
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
54
67
CsonGenerator . generate ( list . hash , note , output_dir ) if list . guid == note . notebook_guid
55
68
end
56
69
end
0 commit comments