evernote_utils 0.0.9 → 0.1.0

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