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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4b14867d776bec71831858f2f35e74e09c2e47b626aefef877de2116f3b72f41
4
- data.tar.gz: 25bb283e5c407ac1fa7e4fc60534fc4fedf9971a6fe52cab9ae5b6b0ae3eb28a
3
+ metadata.gz: 5288d5e7d1b03c29e1734a75752ce28adef262bbecff28c13005b60b488bdca6
4
+ data.tar.gz: b670d8d8c3010fa1d4f198ea5fadbae4b37d8c7227457fe4bfac3d2a62fb7286
5
5
  SHA512:
6
- metadata.gz: 168ff6b9e3f821f49a64daa0c4750ac2ede8ee1c39e6407545f3505eea8e2b0fead70ecccb6d681f3b0aa36199ecec5965fd302ecc4ed7b23a6e5452b7f328dc
7
- data.tar.gz: 672fa7e84b6634390f1fb9217c1c13c44d0e5ef24eb89b13dcfcb34b0fd722fc96a51be194ef447a285c2ce1c0a0b971c0e72e6c244224a77868f18bdfe39131
6
+ metadata.gz: 8ae32352a15314846171fcd409ebb129bb1cf663b57b2280af7327064976084bb918704c01723158876b2dd3993f92abf97faa0a6c0060e627cb6d9bbe942c7b
7
+ data.tar.gz: 0e721921aaeee8dcaf8bac1b6ee8774e377b7aede8f79571f2badabc91d8fc3bbb9d6e55e3666af85f5db941e96d427b139cda1d4e819acd5506d24df08efa9c
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- dynalist (1.0.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.16.1)
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)
@@ -16,5 +16,4 @@ Dotenv.load
16
16
 
17
17
  module Dynalist
18
18
  class Error < StandardError; end
19
- # Your code goes here...
20
19
  end
@@ -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
- JSON.parse(response.body)["results"]
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
- res = @conn.post "#{@base}doc/read", {token: @token, file_id: document.id}.to_json
7
- JSON.parse(res.body, symbolize_names: true)[:nodes].map{ |node| node }
8
- nodes = JSON.parse(res.body, symbolize_names: true)[:nodes].map{ |node| Node.new(node.merge(file_id: document.id)) }
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
- res = @conn.post "#{@base}doc/check_for_updates", {token: @token, file_ids: document_ids}.to_json
15
- JSON.parse(res.body, symbolize_names: true)[:versions]
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
- res = @conn.post "#{@base}doc/edit", {token: @token, file_id: document.id, changes: changes}.to_json
21
- JSON.parse(res.body, symbolize_names: true)[:new_node_ids]
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
@@ -1,3 +1,3 @@
1
1
  module Dynalist
2
- VERSION = "1.0.0"
2
+ VERSION = "1.0.1"
3
3
  end
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.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-08 00:00:00.000000000 Z
11
+ date: 2019-10-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler