dynalist 1.0.0 → 1.0.1
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/Gemfile.lock +2 -2
- data/lib/dynalist.rb +0 -1
- data/lib/dynalist/base_api_client.rb +35 -0
- data/lib/dynalist/file_api_client.rb +4 -1
- data/lib/dynalist/node_api_client.rb +10 -7
- data/lib/dynalist/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5288d5e7d1b03c29e1734a75752ce28adef262bbecff28c13005b60b488bdca6
|
4
|
+
data.tar.gz: b670d8d8c3010fa1d4f198ea5fadbae4b37d8c7227457fe4bfac3d2a62fb7286
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8ae32352a15314846171fcd409ebb129bb1cf663b57b2280af7327064976084bb918704c01723158876b2dd3993f92abf97faa0a6c0060e627cb6d9bbe942c7b
|
7
|
+
data.tar.gz: 0e721921aaeee8dcaf8bac1b6ee8774e377b7aede8f79571f2badabc91d8fc3bbb9d6e55e3666af85f5db941e96d427b139cda1d4e819acd5506d24df08efa9c
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
dynalist (1.0.
|
4
|
+
dynalist (1.0.1)
|
5
5
|
faraday
|
6
6
|
|
7
7
|
GEM
|
@@ -15,7 +15,7 @@ GEM
|
|
15
15
|
safe_yaml (~> 1.0.0)
|
16
16
|
diff-lcs (1.3)
|
17
17
|
dotenv (2.7.5)
|
18
|
-
faraday (0.
|
18
|
+
faraday (0.17.0)
|
19
19
|
multipart-post (>= 1.2, < 3)
|
20
20
|
hashdiff (1.0.0)
|
21
21
|
method_source (0.9.2)
|
data/lib/dynalist.rb
CHANGED
@@ -7,4 +7,39 @@ class BaseApiClient
|
|
7
7
|
@base = 'api/v1/'
|
8
8
|
@token = token || ENV['DYNALIST_TOKEN']
|
9
9
|
end
|
10
|
+
|
11
|
+
class Error < StandardError; end
|
12
|
+
|
13
|
+
class ApiError < Error
|
14
|
+
attr_reader :response
|
15
|
+
|
16
|
+
# @param [Response] response
|
17
|
+
def initialize(response = nil)
|
18
|
+
@response = response
|
19
|
+
end
|
20
|
+
|
21
|
+
def message
|
22
|
+
@response[:_msg]
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
class InvalidError < ApiError; end
|
27
|
+
class InvalidTokenError < ApiError; end
|
28
|
+
class TooManyRequestsError < ApiError; end
|
29
|
+
class LockFailError < ApiError; end
|
30
|
+
|
31
|
+
ApiErrors = {
|
32
|
+
Invalid: InvalidError,
|
33
|
+
InvalidToken: InvalidTokenError,
|
34
|
+
TooManyRequests: TooManyRequestsError,
|
35
|
+
LockFail: LockFailError
|
36
|
+
}.freeze
|
37
|
+
|
38
|
+
def check_response!(response)
|
39
|
+
res = JSON.parse(response.body, symbolize_names: true)
|
40
|
+
return true if res[:_code] == 'Ok'
|
41
|
+
|
42
|
+
error = ApiErrors.fetch(res[:_code].to_sym, ApiError)
|
43
|
+
raise error, res
|
44
|
+
end
|
10
45
|
end
|
@@ -4,7 +4,9 @@ require 'json'
|
|
4
4
|
class FileApiClient < BaseApiClient
|
5
5
|
def get_file
|
6
6
|
response = @conn.post "#{@base}file/list", {token: @token}.to_json
|
7
|
+
check_response!(response)
|
7
8
|
json = JSON.parse(response.body, symbolize_names: true)
|
9
|
+
|
8
10
|
FileTree.instance.root_id = json[:root_file_id]
|
9
11
|
json[:files].map do |file|
|
10
12
|
instance = if file[:type] == 'folder'
|
@@ -21,7 +23,8 @@ class FileApiClient < BaseApiClient
|
|
21
23
|
def move_file(queries)
|
22
24
|
changes = queries.map(&:to_query)
|
23
25
|
response = @conn.post "#{@base}file/edit", {token: @token, changes: changes}.to_json
|
24
|
-
|
26
|
+
check_response!(response)
|
27
|
+
JSON.parse(response.body, symbolize_names: true)[:results]
|
25
28
|
end
|
26
29
|
|
27
30
|
class Edit
|
@@ -3,22 +3,25 @@ require 'json'
|
|
3
3
|
|
4
4
|
class NodeApiClient < BaseApiClient
|
5
5
|
def read(document)
|
6
|
-
|
7
|
-
|
8
|
-
|
6
|
+
response = @conn.post "#{@base}doc/read", {token: @token, file_id: document.id}.to_json
|
7
|
+
check_response!(response)
|
8
|
+
JSON.parse(response.body, symbolize_names: true)[:nodes].map{ |node| node }
|
9
|
+
nodes = JSON.parse(response.body, symbolize_names: true)[:nodes].map{ |node| Node.new(node.merge(file_id: document.id)) }
|
9
10
|
NodeTree.add(nodes)
|
10
11
|
end
|
11
12
|
|
12
13
|
def check_updates(documents)
|
13
14
|
document_ids = documents.map(&:id)
|
14
|
-
|
15
|
-
|
15
|
+
response = @conn.post "#{@base}doc/check_for_updates", {token: @token, file_ids: document_ids}.to_json
|
16
|
+
check_response!(response)
|
17
|
+
JSON.parse(response.body, symbolize_names: true)[:versions]
|
16
18
|
end
|
17
19
|
|
18
20
|
def edit(document, queries)
|
19
21
|
changes = queries.map(&:to_query)
|
20
|
-
|
21
|
-
|
22
|
+
response = @conn.post "#{@base}doc/edit", {token: @token, file_id: document.id, changes: changes}.to_json
|
23
|
+
check_response!(response)
|
24
|
+
JSON.parse(response.body, symbolize_names: true)[:new_node_ids]
|
22
25
|
end
|
23
26
|
|
24
27
|
class Insert
|
data/lib/dynalist/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dynalist
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- 4geru
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-10-
|
11
|
+
date: 2019-10-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|