evertils-common 0.2.9 → 0.3.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 +4 -4
- data/.travis.yml +13 -0
- data/README.md +6 -3
- data/Rakefile +22 -0
- data/evertils-common.gemspec +1 -1
- data/lib/evertils/common.rb +38 -4
- data/lib/evertils/common/authentication.rb +19 -11
- data/lib/evertils/common/entity.rb +5 -4
- data/lib/evertils/common/entity/note.rb +22 -5
- data/lib/evertils/common/entity/notebook.rb +20 -1
- data/lib/evertils/common/manager.rb +35 -0
- data/lib/evertils/common/manager/note.rb +23 -0
- data/lib/evertils/common/manager/notebook.rb +37 -0
- data/lib/evertils/common/manager/sync.rb +16 -0
- data/lib/evertils/common/manager/tag.rb +23 -0
- data/lib/evertils/common/query/backup.rb +10 -9
- data/lib/evertils/common/query/simple.rb +52 -27
- data/lib/evertils/common/query/time.rb +0 -5
- data/lib/evertils/common/version.rb +1 -1
- data/lib/evertils/test.rb +29 -0
- data/lib/evertils/test/base.rb +116 -0
- data/lib/evertils/test/seed/all.yml +24 -0
- metadata +19 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b9038ca948f737bd4428305769288a85266cb578
|
4
|
+
data.tar.gz: 34bc8249af09505f5ce018145ff20db106e674cb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c34cf9d3614cb2fbed819e6b4b987d22eb4d989dfef1d35a348f2d77b8fbf6fc3ed829c362c6ed534fff72d8e01e76e8e8c320eef0e5231c450a6017ef4d6ae1
|
7
|
+
data.tar.gz: e1d991a75e40f0763fb541bc7421bc6fcddea49097c7eeef171c0390cadfc29ebb3476646837b3aee31e28985ee47b94fae1a0cceac1086c3af0328705e2e787
|
data/.travis.yml
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
language: ruby
|
2
|
+
rvm:
|
3
|
+
- "2.2.1"
|
4
|
+
script:
|
5
|
+
- bundle exec rake cleanup
|
6
|
+
- bundle exec rake test
|
7
|
+
after_failure:
|
8
|
+
- bundle exec rake cleanup
|
9
|
+
env:
|
10
|
+
- EVERTILS_SB_TOKEN="S=s1:U=91e14:E=1594288f829:C=151ead7c908:P=1cd:A=en-devtoken:V=2:H=f688ac96519d5c525929073624a38ac2"
|
11
|
+
addons:
|
12
|
+
code_climate:
|
13
|
+
repo_token: 68c56c90c9e17fd1da015529e8957ca50855d5b4b3436641449c84ad1d0bddfc
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Evertils::Common
|
2
2
|
|
3
|
-
[](https://codeclimate.com/github/aapis/evertils-common)
|
3
|
+
[](https://codeclimate.com/github/aapis/evertils-common) [](https://travis-ci.org/aapis/evertils-common)
|
4
4
|
|
5
5
|
Evertils::Common is an abstraction library for interacting with the Evernote API.
|
6
6
|
|
@@ -9,7 +9,7 @@ Evertils::Common is an abstraction library for interacting with the Evernote API
|
|
9
9
|
```ruby
|
10
10
|
gem 'evertils-common'
|
11
11
|
|
12
|
-
# or
|
12
|
+
# or from the command line
|
13
13
|
gem install evertils-common
|
14
14
|
```
|
15
15
|
|
@@ -17,9 +17,12 @@ Then add the following to your ~/.bash_profile
|
|
17
17
|
|
18
18
|
```shell
|
19
19
|
export EVERTILS_TOKEN="token_goes_here"
|
20
|
+
|
21
|
+
# add the following if you plan on running the test suite
|
22
|
+
export EVERTILS_SB_TOKEN="sandbox token here"
|
20
23
|
```
|
21
24
|
|
22
|
-
Get your Evernote Developer Tokens [here](https://www.evernote.com/
|
25
|
+
Get your production Evernote Developer Tokens [here](https://www.evernote.com/api/DeveloperToken.action) and your sandbox tokens [here](https://sandbox.evernote.com/api/DeveloperToken.action).
|
23
26
|
|
24
27
|
## Usage
|
25
28
|
|
data/Rakefile
CHANGED
@@ -1,9 +1,31 @@
|
|
1
1
|
require "bundler/gem_tasks"
|
2
2
|
require 'rake/testtask'
|
3
|
+
require 'evertils/test'
|
3
4
|
|
4
5
|
Rake::TestTask.new do |t|
|
5
6
|
t.libs << 'test'
|
6
7
|
end
|
7
8
|
|
9
|
+
task :seed do
|
10
|
+
if ENV['TEST'].nil?
|
11
|
+
Evertils::Test::Base.before
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
task :cleanup do
|
16
|
+
if ENV['TEST'].nil?
|
17
|
+
Evertils::Test::Base.after
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
# hack from
|
22
|
+
# http://stackoverflow.com/questions/1689504/how-do-i-make-a-rake-task-run-after-all-other-tasks-i-e-a-rake-afterbuild-tas
|
23
|
+
current_tasks = Rake.application.top_level_tasks
|
24
|
+
if current_tasks.include?('test')
|
25
|
+
current_tasks << :cleanup
|
26
|
+
Rake.application.instance_variable_set(:@top_level_tasks, current_tasks)
|
27
|
+
task :test => :seed
|
28
|
+
end
|
29
|
+
|
8
30
|
desc "Run tests"
|
9
31
|
task :default => :test
|
data/evertils-common.gemspec
CHANGED
@@ -18,8 +18,8 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_development_dependency "bundler", "~> 1.10"
|
22
21
|
spec.add_development_dependency "rake", "~> 10.0"
|
22
|
+
spec.add_development_dependency "minitest"
|
23
23
|
|
24
24
|
spec.add_runtime_dependency 'mime-types'
|
25
25
|
spec.add_runtime_dependency "evernote-thrift"
|
data/lib/evertils/common.rb
CHANGED
@@ -8,17 +8,51 @@ require 'evertils/common/enml'
|
|
8
8
|
require 'evertils/common/entity'
|
9
9
|
require 'evertils/common/query'
|
10
10
|
require 'evertils/common/converter'
|
11
|
+
require 'evertils/common/manager'
|
11
12
|
require 'evertils/common/version'
|
12
|
-
|
13
|
+
|
13
14
|
require 'evertils/common/query/simple'
|
14
15
|
require 'evertils/common/query/time'
|
16
|
+
require 'evertils/common/query/backup'
|
17
|
+
|
18
|
+
require 'evertils/common/manager/note'
|
19
|
+
require 'evertils/common/manager/notebook'
|
20
|
+
require 'evertils/common/manager/sync'
|
21
|
+
require 'evertils/common/manager/tag'
|
22
|
+
|
23
|
+
require 'evertils/common/entity/notebook'
|
24
|
+
require 'evertils/common/entity/notebooks'
|
25
|
+
require 'evertils/common/entity/notes'
|
26
|
+
require 'evertils/common/entity/note'
|
27
|
+
require 'evertils/common/entity/tag'
|
28
|
+
require 'evertils/common/entity/tags'
|
29
|
+
require 'evertils/common/entity/sync'
|
30
|
+
|
15
31
|
require 'evertils/common/converter/yaml_to_enml'
|
16
32
|
|
17
33
|
module Evertils
|
18
|
-
module Common
|
19
34
|
|
20
|
-
|
21
|
-
|
35
|
+
#
|
36
|
+
# @since 0.3.0
|
37
|
+
def self.token
|
38
|
+
ENV['EVERTILS_TOKEN']
|
39
|
+
end
|
40
|
+
|
41
|
+
#
|
42
|
+
# @since 0.3.0
|
43
|
+
def self.host
|
44
|
+
'www.evernote.com'
|
45
|
+
end
|
22
46
|
|
47
|
+
#
|
48
|
+
# @since 0.3.0
|
49
|
+
def self.is_test?
|
50
|
+
false
|
23
51
|
end
|
52
|
+
|
53
|
+
# define Common namespace
|
54
|
+
# @since 0.3.0
|
55
|
+
module Common
|
56
|
+
end
|
57
|
+
|
24
58
|
end
|
@@ -1,24 +1,27 @@
|
|
1
1
|
module Evertils
|
2
2
|
module Common
|
3
3
|
class Authentication
|
4
|
+
include Singleton
|
4
5
|
|
5
6
|
attr_accessor :store, :shardId, :version
|
6
7
|
|
7
8
|
def initialize
|
8
9
|
begin
|
9
|
-
if Evertils
|
10
|
+
if Evertils.token.nil?
|
10
11
|
Notify.error("Evernote developer token is not configured properly!\n$EVERTILS_TOKEN == nil")
|
11
12
|
end
|
12
13
|
|
13
|
-
userStoreUrl = "https://#{Evertils
|
14
|
+
userStoreUrl = "https://#{Evertils.host}/edam/user"
|
14
15
|
|
15
16
|
userStoreTransport = Thrift::HTTPClientTransport.new(userStoreUrl)
|
16
17
|
userStoreProtocol = Thrift::BinaryProtocol.new(userStoreTransport)
|
17
18
|
@@user = ::Evernote::EDAM::UserStore::UserStore::Client.new(userStoreProtocol)
|
18
19
|
|
19
|
-
|
20
|
-
|
21
|
-
|
20
|
+
if Evertils.is_test?
|
21
|
+
puts "TEST USER: #{info[:user]}"
|
22
|
+
end
|
23
|
+
|
24
|
+
versionOK = @@user.checkVersion("evernote-data", ::Evernote::EDAM::UserStore::EDAM_VERSION_MAJOR, ::Evernote::EDAM::UserStore::EDAM_VERSION_MINOR)
|
22
25
|
|
23
26
|
@version = "#{::Evernote::EDAM::UserStore::EDAM_VERSION_MAJOR}.#{::Evernote::EDAM::UserStore::EDAM_VERSION_MINOR}"
|
24
27
|
@shardId = user.shardId
|
@@ -27,7 +30,7 @@ module Evertils
|
|
27
30
|
Notify.error("Evernote API requires an update. Latest version is #{@version}")
|
28
31
|
end
|
29
32
|
|
30
|
-
noteStoreUrl = @@user.getNoteStoreUrl(Evertils
|
33
|
+
noteStoreUrl = @@user.getNoteStoreUrl(Evertils.token)
|
31
34
|
|
32
35
|
noteStoreTransport = Thrift::HTTPClientTransport.new(noteStoreUrl)
|
33
36
|
noteStoreProtocol = Thrift::BinaryProtocol.new(noteStoreTransport)
|
@@ -53,14 +56,19 @@ module Evertils
|
|
53
56
|
end
|
54
57
|
|
55
58
|
def user
|
56
|
-
@@user.getUser(Evertils
|
59
|
+
@@user.getUser(Evertils.token)
|
57
60
|
end
|
58
61
|
|
59
62
|
def call(func, *args)
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
63
|
+
begin
|
64
|
+
if args.size > 0
|
65
|
+
@store.method(func.to_s).call(Evertils.token, *args)
|
66
|
+
else
|
67
|
+
@store.method(func.to_s).call(Evertils.token)
|
68
|
+
end
|
69
|
+
rescue Evernote::EDAM::Error::EDAMSystemException => e
|
70
|
+
Notify.warning e.inspect
|
71
|
+
nil
|
64
72
|
end
|
65
73
|
end
|
66
74
|
end
|
@@ -1,15 +1,16 @@
|
|
1
|
-
require 'evertils/common/authentication'
|
2
|
-
|
3
1
|
module Evertils
|
4
2
|
module Common
|
5
3
|
module Entity
|
6
4
|
class Base
|
7
5
|
|
6
|
+
attr_accessor :evernote
|
7
|
+
|
8
8
|
def initialize
|
9
|
-
@evernote = Authentication.
|
10
|
-
self
|
9
|
+
@evernote = Authentication.instance
|
11
10
|
end
|
12
11
|
|
12
|
+
#
|
13
|
+
# @since 0.2.0
|
13
14
|
def has_required_fields(hash, required)
|
14
15
|
hash.keys.each do |key|
|
15
16
|
required.include? key
|
@@ -26,7 +26,7 @@ module Evertils
|
|
26
26
|
|
27
27
|
#
|
28
28
|
# @since 0.2.0
|
29
|
-
def create(title, body,
|
29
|
+
def create(title, body, parent_notebook = nil, file = nil, share_note = false, created_on = nil)
|
30
30
|
@entity = nil
|
31
31
|
|
32
32
|
# final output
|
@@ -62,11 +62,11 @@ module Evertils
|
|
62
62
|
# setup note properties
|
63
63
|
our_note.title = title
|
64
64
|
our_note.content = n_body
|
65
|
-
our_note.created = created_on if !created_on.
|
65
|
+
our_note.created = created_on if !created_on.is_a?(DateTime)
|
66
66
|
|
67
|
-
if !
|
67
|
+
if !parent_notebook.is_a? Evertils::Common::Entity::Notebook
|
68
68
|
nb = Entity::Notebook.new
|
69
|
-
parent_notebook = nb.find(
|
69
|
+
parent_notebook = nb.find(parent_notebook)
|
70
70
|
parent_notebook = nb.default if parent_notebook.nil?
|
71
71
|
end
|
72
72
|
|
@@ -85,6 +85,8 @@ module Evertils
|
|
85
85
|
rescue ::Evernote::EDAM::Error::EDAMNotFoundException
|
86
86
|
## Parent Notebook GUID doesn't correspond to an actual notebook
|
87
87
|
Notify.error "EDAMNotFoundException: Invalid parent notebook GUID"
|
88
|
+
rescue ArgumentError => e
|
89
|
+
Notify.error e.backtrace
|
88
90
|
end
|
89
91
|
|
90
92
|
Notify.success("#{parent_notebook.prop(:stack)}/#{parent_notebook.prop(:name)}/#{our_note.title} created")
|
@@ -122,8 +124,10 @@ module Evertils
|
|
122
124
|
#
|
123
125
|
# @since 0.2.9
|
124
126
|
def move_to(notebook)
|
125
|
-
nb = Evertils::Common::
|
127
|
+
nb = Evertils::Common::Manager::Notebook.new
|
126
128
|
target = nb.find(notebook)
|
129
|
+
|
130
|
+
raise "Notebook not found: #{notebook}" if !target
|
127
131
|
|
128
132
|
@entity.notebookGuid = target.prop(:guid)
|
129
133
|
|
@@ -163,6 +167,19 @@ module Evertils
|
|
163
167
|
end
|
164
168
|
alias_method :find_by_name, :find
|
165
169
|
|
170
|
+
#
|
171
|
+
# @since 0.3.0
|
172
|
+
def tag(name)
|
173
|
+
@entity.tagNames = [name]
|
174
|
+
@evernote.call(:updateNote, @entity)
|
175
|
+
end
|
176
|
+
|
177
|
+
#
|
178
|
+
# @since 0.3.0
|
179
|
+
def entity
|
180
|
+
@entity
|
181
|
+
end
|
182
|
+
|
166
183
|
end
|
167
184
|
end
|
168
185
|
end
|
@@ -5,6 +5,8 @@ module Evertils
|
|
5
5
|
module Entity
|
6
6
|
class Notebook < Entity::Base
|
7
7
|
|
8
|
+
#
|
9
|
+
# @since 0.2.0
|
8
10
|
def find(name)
|
9
11
|
@entity = nil
|
10
12
|
notebooks = Notebooks.new.all
|
@@ -18,6 +20,8 @@ module Evertils
|
|
18
20
|
self if @entity
|
19
21
|
end
|
20
22
|
|
23
|
+
#
|
24
|
+
# @since 0.2.0
|
21
25
|
def create(name, stack = nil)
|
22
26
|
@entity = nil
|
23
27
|
|
@@ -34,30 +38,45 @@ module Evertils
|
|
34
38
|
self if @entity
|
35
39
|
end
|
36
40
|
|
41
|
+
#
|
42
|
+
# @since 0.2.0
|
37
43
|
def default
|
38
44
|
@entity = @evernote.call(:getDefaultNotebook)
|
39
45
|
|
40
46
|
self if @entity
|
41
47
|
end
|
42
48
|
|
49
|
+
#
|
50
|
+
# @since 0.2.9
|
43
51
|
def expunge!
|
44
52
|
@evernote.call(:expungeNotebook, @entity.guid)
|
45
53
|
end
|
46
54
|
|
55
|
+
#
|
56
|
+
# @since 0.2.0
|
57
|
+
# @deprecated 0.2.9
|
47
58
|
def expunge
|
48
59
|
deprecation_notice('0.2.9')
|
49
60
|
|
50
61
|
@evernote.call(:expungeNotebook, @entity.guid)
|
51
62
|
end
|
52
63
|
|
64
|
+
#
|
65
|
+
# @since 0.2.0
|
53
66
|
def notes
|
54
67
|
filter = ::Evernote::EDAM::NoteStore::NoteFilter.new
|
55
68
|
filter.notebookGuid = @entity.guid
|
56
69
|
|
57
|
-
notes = Notes.new
|
70
|
+
notes = Notes.new(@evernote)
|
58
71
|
notes.find(nil, @entity.guid)
|
59
72
|
end
|
60
73
|
|
74
|
+
#
|
75
|
+
# @since 0.3.0
|
76
|
+
def entity
|
77
|
+
@entity
|
78
|
+
end
|
79
|
+
|
61
80
|
end
|
62
81
|
end
|
63
82
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'evertils/common/authentication'
|
2
|
+
|
3
|
+
module Evertils
|
4
|
+
module Common
|
5
|
+
module Manager
|
6
|
+
class Base
|
7
|
+
|
8
|
+
attr_accessor :api
|
9
|
+
|
10
|
+
#
|
11
|
+
# @since 0.3.0
|
12
|
+
def initialize
|
13
|
+
@api = Authentication.instance
|
14
|
+
|
15
|
+
self
|
16
|
+
end
|
17
|
+
|
18
|
+
#
|
19
|
+
# @since 0.3.0
|
20
|
+
def has_required_fields(hash, required)
|
21
|
+
hash.keys.each do |key|
|
22
|
+
required.include? key
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
#
|
27
|
+
# @since 0.3.0
|
28
|
+
def deprecation_notice(version)
|
29
|
+
puts "Deprecated as of #{version}"
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Evertils
|
2
|
+
module Common
|
3
|
+
module Manager
|
4
|
+
class Note < Manager::Base
|
5
|
+
|
6
|
+
#
|
7
|
+
# @since 0.3.0
|
8
|
+
def create(config)
|
9
|
+
entity = Evertils::Common::Entity::Note.new
|
10
|
+
entity.create(config[:name], config[:body], config[:notebook], config[:files], config[:shared], config[:created_on])
|
11
|
+
end
|
12
|
+
|
13
|
+
#
|
14
|
+
# @since 0.3.0
|
15
|
+
def find(name)
|
16
|
+
entity = Evertils::Common::Entity::Note.new
|
17
|
+
entity.find(name)
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Evertils
|
2
|
+
module Common
|
3
|
+
module Manager
|
4
|
+
class Notebook < Manager::Base
|
5
|
+
|
6
|
+
#
|
7
|
+
# @since 0.3.0
|
8
|
+
def create(name, stack = nil)
|
9
|
+
entity = Evertils::Common::Entity::Notebook.new
|
10
|
+
entity.create(name, stack)
|
11
|
+
end
|
12
|
+
|
13
|
+
#
|
14
|
+
# @since 0.3.0
|
15
|
+
def find(name)
|
16
|
+
entity = Evertils::Common::Entity::Notebook.new
|
17
|
+
entity.find(name)
|
18
|
+
end
|
19
|
+
|
20
|
+
#
|
21
|
+
# @since 0.3.0
|
22
|
+
def find_or_create(name, stack = nil)
|
23
|
+
search_result = find(name)
|
24
|
+
|
25
|
+
if !search_result
|
26
|
+
note = create(name, stack)
|
27
|
+
else
|
28
|
+
note = search_result
|
29
|
+
end
|
30
|
+
|
31
|
+
note
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Evertils
|
2
|
+
module Common
|
3
|
+
module Manager
|
4
|
+
class Tag < Manager::Base
|
5
|
+
|
6
|
+
#
|
7
|
+
# @since 0.3.0
|
8
|
+
def create(name)
|
9
|
+
entity = Evertils::Common::Entity::Tag.new
|
10
|
+
entity.create(name)
|
11
|
+
end
|
12
|
+
|
13
|
+
#
|
14
|
+
# @since 0.3.0
|
15
|
+
def find(name)
|
16
|
+
entity = Evertils::Common::Entity::Tag.new
|
17
|
+
entity.find(name)
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -1,11 +1,3 @@
|
|
1
|
-
require 'evertils/common/entity/notebook'
|
2
|
-
require 'evertils/common/entity/notebooks'
|
3
|
-
require 'evertils/common/entity/notes'
|
4
|
-
require 'evertils/common/entity/note'
|
5
|
-
require 'evertils/common/entity/tag'
|
6
|
-
require 'evertils/common/entity/tags'
|
7
|
-
require 'evertils/common/entity/sync'
|
8
|
-
|
9
1
|
module Evertils
|
10
2
|
module Common
|
11
3
|
module Query
|
@@ -15,9 +7,18 @@ module Evertils
|
|
15
7
|
# @since 0.2.8
|
16
8
|
def files(*files)
|
17
9
|
date = DateTime.now
|
10
|
+
backup_notebook_name = 'Backup'
|
18
11
|
nm = Entity::Note.new
|
12
|
+
|
13
|
+
# create the backup notebook if it does not exist
|
14
|
+
nb_entity = Entity::Notebook.new
|
15
|
+
nb = nb_entity.find(backup_notebook_name)
|
16
|
+
|
17
|
+
if nb_entity.find(backup_notebook_name).nil?
|
18
|
+
nb = nb_entity.create(backup_notebook_name)
|
19
|
+
end
|
19
20
|
|
20
|
-
@entity = nm.create("Backup: #{date}",
|
21
|
+
@entity = nm.create("Backup: #{date}", "", nb, files)
|
21
22
|
end
|
22
23
|
|
23
24
|
#
|
@@ -1,76 +1,101 @@
|
|
1
|
-
require 'evertils/common/entity/notebook'
|
2
|
-
require 'evertils/common/entity/notebooks'
|
3
|
-
require 'evertils/common/entity/notes'
|
4
|
-
require 'evertils/common/entity/note'
|
5
|
-
require 'evertils/common/entity/tag'
|
6
|
-
require 'evertils/common/entity/tags'
|
7
|
-
require 'evertils/common/entity/sync'
|
8
|
-
|
9
1
|
module Evertils
|
10
2
|
module Common
|
11
3
|
module Query
|
12
4
|
class Simple < Query::Base
|
13
5
|
|
6
|
+
#
|
7
|
+
# @since 0.2.0
|
14
8
|
def notebooks
|
15
9
|
Entity::Notebooks.new.all
|
16
10
|
end
|
17
11
|
|
12
|
+
#
|
13
|
+
# @since 0.2.0
|
18
14
|
def tags
|
19
15
|
Entity::Tags.new.all
|
20
16
|
end
|
21
17
|
|
18
|
+
#
|
19
|
+
# @since 0.2.0
|
22
20
|
def notebook_by_name(name)
|
23
|
-
|
24
|
-
nb.find(name)
|
21
|
+
entity = Entity::Notebook.new
|
22
|
+
nb = entity.find(name)
|
23
|
+
nb.entity
|
25
24
|
end
|
26
25
|
|
26
|
+
#
|
27
|
+
# @since 0.2.0
|
27
28
|
def notes_by_notebook(name)
|
28
|
-
|
29
|
-
nb.find(name)
|
29
|
+
entity = Entity::Notebook.new
|
30
|
+
nb = entity.find(name)
|
30
31
|
nb.notes
|
31
32
|
end
|
32
33
|
|
34
|
+
#
|
35
|
+
# @since 0.2.0
|
33
36
|
def create_stack_from(full_path)
|
34
37
|
stack = Entity::Stack.new
|
35
38
|
stack.create_from_yml(full_path)
|
36
39
|
end
|
37
40
|
|
41
|
+
#
|
42
|
+
# @since 0.2.0
|
38
43
|
def create_note_from(full_path)
|
39
|
-
|
40
|
-
note.create_from_yml(full_path)
|
44
|
+
entity = Entity::Note.new
|
45
|
+
note = entity.create_from_yml(full_path)
|
46
|
+
note.entity
|
41
47
|
end
|
42
48
|
|
49
|
+
#
|
50
|
+
# @since 0.2.0
|
43
51
|
def create_notebooks_from(full_path)
|
44
|
-
|
45
|
-
nb.create_from_yml(full_path)
|
52
|
+
entity = Entity::Notebooks.new
|
53
|
+
nb = entity.create_from_yml(full_path)
|
54
|
+
nb.entity
|
46
55
|
end
|
47
56
|
|
57
|
+
#
|
58
|
+
# @since 0.2.0
|
48
59
|
def create_notebook(name, stack = nil)
|
49
|
-
|
50
|
-
nb.create(name, stack)
|
60
|
+
entity = Entity::Notebook.new
|
61
|
+
nb = entity.create(name, stack)
|
62
|
+
nb.entity
|
51
63
|
end
|
52
64
|
|
65
|
+
#
|
66
|
+
# @since 0.2.0
|
53
67
|
def find_note(title_filter = nil, notebook_filter = nil)
|
54
|
-
|
55
|
-
note.find(title_filter, notebook_filter)
|
68
|
+
entity = Entity::Note.new
|
69
|
+
note = entity.find(title_filter, notebook_filter)
|
70
|
+
note.entity
|
56
71
|
end
|
57
72
|
|
73
|
+
#
|
74
|
+
# @since 0.2.0
|
58
75
|
def note_exists(name)
|
59
|
-
|
60
|
-
note.
|
76
|
+
entity = Entity::Note.new
|
77
|
+
note = entity.find(name)
|
78
|
+
note.exists?
|
61
79
|
end
|
62
80
|
|
81
|
+
#
|
82
|
+
# @since 0.2.0
|
63
83
|
def create_note(title, body, p_notebook_name = nil, file = nil, share_note = false, created_on = nil)
|
64
|
-
|
65
|
-
note.create(title, body, p_notebook_name, file, share_note, created_on)
|
84
|
+
entity = Entity::Note.new
|
85
|
+
note = nm.create(title, body, p_notebook_name, file, share_note, created_on)
|
86
|
+
note.entity
|
66
87
|
end
|
67
88
|
|
89
|
+
#
|
90
|
+
# @since 0.2.0
|
68
91
|
def destroy_note(name)
|
69
|
-
|
70
|
-
note.find(name)
|
71
|
-
note.expunge
|
92
|
+
entity = Entity::Note.new
|
93
|
+
note = entity.find(name)
|
94
|
+
note.expunge!
|
72
95
|
end
|
73
96
|
|
97
|
+
#
|
98
|
+
# @since 0.2.0
|
74
99
|
def poll
|
75
100
|
begin
|
76
101
|
sync = Entity::Sync.new
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'evertils/common'
|
2
|
+
require 'evertils/test/base'
|
3
|
+
|
4
|
+
module Evertils
|
5
|
+
|
6
|
+
#
|
7
|
+
# @since 0.3.0
|
8
|
+
def self.token
|
9
|
+
ENV['EVERTILS_SB_TOKEN']
|
10
|
+
end
|
11
|
+
|
12
|
+
#
|
13
|
+
# @since 0.3.0
|
14
|
+
def self.host
|
15
|
+
'sandbox.evernote.com'
|
16
|
+
end
|
17
|
+
|
18
|
+
#
|
19
|
+
# @since 0.3.0
|
20
|
+
def self.is_test?
|
21
|
+
true
|
22
|
+
end
|
23
|
+
|
24
|
+
# define Test namespace
|
25
|
+
# @since 0.3.0
|
26
|
+
module Test
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
@@ -0,0 +1,116 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
|
3
|
+
module Evertils
|
4
|
+
module Test
|
5
|
+
class Base < Minitest::Test
|
6
|
+
|
7
|
+
# Run before all tests (check the Rakefile for specifics)
|
8
|
+
# @since 0.3.0
|
9
|
+
def self.before
|
10
|
+
puts "Seeding test data"
|
11
|
+
inst = Base.new(nil)
|
12
|
+
inst.setup
|
13
|
+
inst.seed
|
14
|
+
end
|
15
|
+
|
16
|
+
# Run after all tests (check the Rakefile for specifics)
|
17
|
+
# @since 0.3.0
|
18
|
+
def self.after
|
19
|
+
puts "Deleting test data"
|
20
|
+
inst = Base.new(nil)
|
21
|
+
inst.setup
|
22
|
+
inst.clean
|
23
|
+
end
|
24
|
+
|
25
|
+
#
|
26
|
+
# @since 0.3.0
|
27
|
+
def setup
|
28
|
+
entity = Evertils::Common::Manager::Sync.new
|
29
|
+
|
30
|
+
@@test_time = Time.now.to_i
|
31
|
+
|
32
|
+
if !entity.state.is_a?(Evernote::EDAM::NoteStore::SyncState)
|
33
|
+
puts 'Could not determine connection to the Evernote API, exiting'
|
34
|
+
exit(1)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
#
|
39
|
+
# @since 0.3.0
|
40
|
+
def seed
|
41
|
+
full_path = File.join(File.dirname(__FILE__), 'seed/all.yml')
|
42
|
+
|
43
|
+
begin
|
44
|
+
if File.exist? full_path
|
45
|
+
conf = YAML::load(File.open(full_path))
|
46
|
+
|
47
|
+
nb = Evertils::Common::Entity::Notebook.new
|
48
|
+
note = Evertils::Common::Entity::Note.new
|
49
|
+
|
50
|
+
conf.each do |stack_name|
|
51
|
+
stack_name.last.each_pair do |key, arr|
|
52
|
+
puts "Creating: #{stack_name.first}/#{key}-#{@@test_time}..."
|
53
|
+
ch_nb = nb.create("#{key}-#{@@test_time}", stack_name.first)
|
54
|
+
|
55
|
+
arr.each do |child_note|
|
56
|
+
child_note.each_pair do |name, options|
|
57
|
+
puts "Creating: #{stack_name.first}/#{key}/#{name}.note..."
|
58
|
+
parsed = DateTime.parse(options['created_on'])
|
59
|
+
|
60
|
+
created_on = (parsed.to_time.to_i.to_s + "000").to_i
|
61
|
+
note.create(name, "Body for test note", ch_nb, nil, false, created_on)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
puts "Sample data seeded"
|
68
|
+
else
|
69
|
+
raise ArgumentError, "File not found: #{full_path}"
|
70
|
+
end
|
71
|
+
rescue ArgumentError => e
|
72
|
+
puts e.message
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
# Remove all seeded data after all tests have run
|
77
|
+
# @since 0.3.0
|
78
|
+
def clean
|
79
|
+
full_path = File.join(File.dirname(__FILE__), 'seed/all.yml')
|
80
|
+
|
81
|
+
begin
|
82
|
+
if File.exist? full_path
|
83
|
+
conf = YAML::load(File.open(full_path))
|
84
|
+
|
85
|
+
nb = Evertils::Common::Entity::Notebooks.new
|
86
|
+
nbm = Evertils::Common::Manager::Notebook.new
|
87
|
+
auth = Evertils::Common::Authentication.instance
|
88
|
+
tm = Evertils::Common::Entity::Tags.new
|
89
|
+
|
90
|
+
puts "Deleting all tags..."
|
91
|
+
tags = tm.all
|
92
|
+
tags.each do |tag|
|
93
|
+
auth.call(:expungeTag, tag.guid)
|
94
|
+
end
|
95
|
+
|
96
|
+
puts "Deleting all notebooks..."
|
97
|
+
notebooks = nb.all
|
98
|
+
default = nbm.find_or_create('Default')
|
99
|
+
|
100
|
+
notebooks.each do |nb|
|
101
|
+
next if nb.guid == default.prop(:guid)
|
102
|
+
auth.call(:expungeNotebook, nb.guid)
|
103
|
+
end
|
104
|
+
|
105
|
+
puts "Sample data deleted"
|
106
|
+
else
|
107
|
+
raise ArgumentError, "File not found: #{full_path}"
|
108
|
+
end
|
109
|
+
rescue ArgumentError => e
|
110
|
+
puts e.message
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
Food:
|
2
|
+
Fruit:
|
3
|
+
- Oranges:
|
4
|
+
created_on: '2015-04-21'
|
5
|
+
- Apples:
|
6
|
+
created_on: '2015-05-02'
|
7
|
+
- Dragon fruit:
|
8
|
+
created_on: '2015-01-14'
|
9
|
+
Vegetable:
|
10
|
+
- Carrots:
|
11
|
+
created_on: '2015-10-11'
|
12
|
+
- Celery:
|
13
|
+
created_on: '2015-11-08'
|
14
|
+
- Onion:
|
15
|
+
created_on: '2015-12-22'
|
16
|
+
Cars:
|
17
|
+
Ford:
|
18
|
+
- Mustang:
|
19
|
+
created_on: '2015-10-11'
|
20
|
+
- Focus:
|
21
|
+
created_on: '2015-08-06'
|
22
|
+
Jaguar:
|
23
|
+
- XJ220:
|
24
|
+
created_on: '2015-06-01'
|
metadata
CHANGED
@@ -1,43 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: evertils-common
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Priebe
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-12-
|
11
|
+
date: 2015-12-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: rake
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '10.0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '10.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: minitest
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: mime-types
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -90,6 +90,7 @@ extensions: []
|
|
90
90
|
extra_rdoc_files: []
|
91
91
|
files:
|
92
92
|
- ".gitignore"
|
93
|
+
- ".travis.yml"
|
93
94
|
- Gemfile
|
94
95
|
- LICENSE.txt
|
95
96
|
- README.md
|
@@ -111,11 +112,19 @@ files:
|
|
111
112
|
- lib/evertils/common/entity/sync.rb
|
112
113
|
- lib/evertils/common/entity/tag.rb
|
113
114
|
- lib/evertils/common/entity/tags.rb
|
115
|
+
- lib/evertils/common/manager.rb
|
116
|
+
- lib/evertils/common/manager/note.rb
|
117
|
+
- lib/evertils/common/manager/notebook.rb
|
118
|
+
- lib/evertils/common/manager/sync.rb
|
119
|
+
- lib/evertils/common/manager/tag.rb
|
114
120
|
- lib/evertils/common/query.rb
|
115
121
|
- lib/evertils/common/query/backup.rb
|
116
122
|
- lib/evertils/common/query/simple.rb
|
117
123
|
- lib/evertils/common/query/time.rb
|
118
124
|
- lib/evertils/common/version.rb
|
125
|
+
- lib/evertils/test.rb
|
126
|
+
- lib/evertils/test/base.rb
|
127
|
+
- lib/evertils/test/seed/all.yml
|
119
128
|
homepage: http://rubygems.org/gems/evertils-common
|
120
129
|
licenses:
|
121
130
|
- MIT
|