evernote_utils 0.0.9 → 0.1.0

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: f356220e4344d4dbc251b94ded74db09f122c0e2
4
- data.tar.gz: 6c49ec6ecb152ada1d78da0719f28f2fb0f36248
3
+ metadata.gz: d1e1c09e9e0935584b6a41379c739096141e4b18
4
+ data.tar.gz: ea9ffa77b7129b6838ad2268a4924fbe6e843ecb
5
5
  SHA512:
6
- metadata.gz: f195ccea97cf381c923d6ded9419a78f5e2d5a006702b913aee906d533a0b688cc3310f1b72ac5ec6d9f369c881d224c21686718f1fc3df5a236651ab8d7ae25
7
- data.tar.gz: b10c826989e81e22822aa0569832774344788153560b8fa1a34cb78cc500c67ec74612b3edc9bcb495f7693bcc65ff9c96c5dbdeb0fad730c39c461756f0f7b5
6
+ metadata.gz: 01803687ee5b0165c1471c38ea3f06ba963bf239d52d9d3407022659ceaa50103ced7cf3b76489840079c36190613040908d77a251463f0c298fc5474b7238f2
7
+ data.tar.gz: b65ce02d5ba3570f55d49dd75a2d6526ded0c7e5d6e3c9e9bc88d7008a16905940f02611c181acb01901b349782c1b05edb7ed4b5825d9b567956890d1b17006
data/README.md CHANGED
@@ -118,7 +118,21 @@ enutils.notes(notebook: notebook, tag: tag, words: 'beginners\' guide')
118
118
  ```
119
119
 
120
120
 
121
- ### update
121
+ ### create note
122
+
123
+ ```ruby
124
+ enutils.create_note(title: 'create new note',
125
+ notebook: enutils.notebook('Inbox'))
126
+
127
+ require 'opne-uri'
128
+ enutils.create_note(title: 'Clip from website',
129
+ notebook: enutils.notebook('Inbox'),
130
+ content: open('https://github.com').read,
131
+ from_html: true)
132
+ ```
133
+
134
+
135
+ ### update note
122
136
 
123
137
  ```ruby
124
138
  notebook = enutils.notebook('Inbox')
@@ -136,5 +150,4 @@ note.save #=> save to Evernote Cloud
136
150
 
137
151
  ## Planning to do
138
152
 
139
- * create note
140
153
  * `ENutils::Note#content` simple access
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
10
10
  spec.email = ["takuya21hashimoto@gmail.com"]
11
11
  spec.description = %q{A thin OOP-friendly wrapper of Evernote Ruby SDK.}
12
12
  spec.summary = %q{A thin OOP-friendly wrapper of Evernote Ruby SDK.}
13
- spec.homepage = ""
13
+ spec.homepage = "https://github.com/memerelics/evernote_utils"
14
14
  spec.license = "MIT"
15
15
 
16
16
  spec.files = `git ls-files`.split($/)
@@ -20,6 +20,7 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_dependency 'evernote-thrift', '~>1.25.1'
22
22
  spec.add_dependency 'activesupport'
23
+ spec.add_dependency 'roadie'
23
24
 
24
25
  spec.add_development_dependency "bundler", "~> 1.3"
25
26
  spec.add_development_dependency "rake"
@@ -48,6 +48,10 @@ module ENUtils
48
48
  with_resources_alternate_data)
49
49
  end
50
50
 
51
+ def create_note(attrs)
52
+ Note.create(self, attrs)
53
+ end
54
+
51
55
  def notebook(name=nil)
52
56
  return nil unless name
53
57
  Notebook.find_by_name(self, name)
@@ -1,5 +1,6 @@
1
1
  require 'active_support/core_ext/object'
2
2
  require 'evernote_utils/notelist'
3
+ require 'roadie'
3
4
 
4
5
  module ENUtils
5
6
  class Note
@@ -33,6 +34,17 @@ module ENUtils
33
34
  NoteList.new(core, result, options)
34
35
  end
35
36
 
37
+ def self.create(core, attrs)
38
+ edam_note = Evernote::EDAM::Type::Note.new(parse_attrs(attrs))
39
+ begin
40
+ res = core.notestore.createNote(core.token, edam_note)
41
+ rescue Evernote::EDAM::Error::EDAMUserException
42
+ # build error message because $!.message is nil
43
+ raise $!.class, "[ErrorCode: #{$!.errorCode}] #{$!.parameter}", $!.backtrace
44
+ end
45
+ new(core, res)
46
+ end
47
+
36
48
  def initialize(core, edam_note)
37
49
  @core = core
38
50
  @edam_note = edam_note
@@ -91,5 +103,36 @@ module ENUtils
91
103
  def remote_content
92
104
  @core.find_note(guid, with_content: true).content
93
105
  end
106
+
107
+ def self.parse_attrs(attrs)
108
+ if notebook = attrs.delete(:notebook)
109
+ attrs[:notebookGuid] = notebook.guid if notebook.is_a? ENUtils::Notebook
110
+ attrs[:notebookGuid] = notebook if notebook.is_a? String
111
+ end
112
+ attrs[:content] = html_to_enml(attrs[:content]) if attrs.delete(:from_html)
113
+ attrs
114
+ end
115
+
116
+ def self.html_to_enml(html)
117
+ html = html.read if html.is_a?(File)
118
+ roadie_doc = ::Roadie::Document.new(html)
119
+ html_transformed = roadie_doc.transform
120
+ nokogiri_doc = Nokogiri::HTML(html_transformed)
121
+ # TODO: filter allowd attributes
122
+ nokogiri_doc.xpath('//@class').remove
123
+ # cannot use img+src
124
+ nokogiri_doc.xpath('//img').remove
125
+ inner = nokogiri_doc.css('body').inner_html
126
+ inner = inner.gsub('<br>', '<br/>')
127
+ wrap_enml(inner)
128
+ end
129
+
130
+ def self.wrap_enml(text)
131
+ '<?xml version="1.0" encoding="UTF-8"?>' +
132
+ '<!DOCTYPE en-note SYSTEM "http://xml.evernote.com/pub/enml2.dtd">' +
133
+ '<en-note>' +
134
+ text +
135
+ '</en-note>'
136
+ end
94
137
  end
95
138
  end
@@ -1,3 +1,3 @@
1
1
  module ENUtils
2
- VERSION = "0.0.9"
2
+ VERSION = "0.1.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: evernote_utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - memerelics
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-28 00:00:00.000000000 Z
11
+ date: 2016-01-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: evernote-thrift
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: roadie
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: bundler
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -193,7 +207,7 @@ files:
193
207
  - spec/evernote_utils_spec.rb
194
208
  - spec/factories.rb
195
209
  - spec/spec_helper.rb
196
- homepage: ''
210
+ homepage: https://github.com/memerelics/evernote_utils
197
211
  licenses:
198
212
  - MIT
199
213
  metadata: {}
@@ -213,7 +227,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
213
227
  version: '0'
214
228
  requirements: []
215
229
  rubyforge_project:
216
- rubygems_version: 2.2.2
230
+ rubygems_version: 2.4.5.1
217
231
  signing_key:
218
232
  specification_version: 4
219
233
  summary: A thin OOP-friendly wrapper of Evernote Ruby SDK.
@@ -224,3 +238,4 @@ test_files:
224
238
  - spec/evernote_utils_spec.rb
225
239
  - spec/factories.rb
226
240
  - spec/spec_helper.rb
241
+ has_rdoc: