notion-sdk-ruby 0.4.1 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +40 -9
- data/lib/notion-sdk-ruby/client.rb +1 -0
- data/lib/notion-sdk-ruby/models/block.rb +4 -0
- data/lib/notion-sdk-ruby/models/database.rb +4 -0
- data/lib/notion-sdk-ruby/models/list.rb +27 -0
- data/lib/notion-sdk-ruby/models/page.rb +4 -0
- data/lib/notion-sdk-ruby/models/user.rb +4 -0
- data/lib/notion-sdk-ruby/operations/search.rb +4 -1
- data/lib/notion-sdk-ruby/request_client.rb +29 -34
- data/lib/notion-sdk-ruby/resources/blocks.rb +12 -4
- data/lib/notion-sdk-ruby/resources/databases.rb +12 -5
- data/lib/notion-sdk-ruby/resources/pages.rb +8 -3
- data/lib/notion-sdk-ruby/resources/users.rb +6 -2
- data/lib/notion-sdk-ruby/version.rb +1 -1
- data/lib/notion-sdk-ruby.rb +9 -3
- data/notion-sdk-ruby.gemspec +3 -1
- metadata +38 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b40512cee112cf660970e4dc0f41d9b2396435c0d0af1b4d360ab17d643fcce6
|
4
|
+
data.tar.gz: 05d7805fdafc25fc3537a4853e61f136c9fbcc49a404559c55288b157c989b0c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '08740b69d9ecdcba0c13e0401095cff74fdfa0be56993061bce45b89b9f8b5d42bbbe1d02dc04e5554b021b1b27b0bc8c183a9c425fb00ed9be6bcc4d84cc184'
|
7
|
+
data.tar.gz: 327b799e2eeb70ed8b1a48296853972579749baeba824f05f10ba506388b1527f1eecb6ad7f774918259bd4bf673748525bfdc56ae7da08787aa266d5b9344bf
|
data/Gemfile.lock
CHANGED
@@ -1,29 +1,55 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
notion-sdk-ruby (0.
|
5
|
-
|
4
|
+
notion-sdk-ruby (0.5.0)
|
5
|
+
faraday (~> 1.8)
|
6
|
+
faraday_middleware (~> 1.1)
|
6
7
|
|
7
8
|
GEM
|
8
9
|
remote: https://rubygems.org/
|
9
10
|
specs:
|
11
|
+
activesupport (6.1.4.1)
|
12
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
13
|
+
i18n (>= 1.6, < 2)
|
14
|
+
minitest (>= 5.1)
|
15
|
+
tzinfo (~> 2.0)
|
16
|
+
zeitwerk (~> 2.3)
|
10
17
|
addressable (2.7.0)
|
11
18
|
public_suffix (>= 2.0.2, < 5.0)
|
12
19
|
ast (2.4.2)
|
13
20
|
coderay (1.1.3)
|
21
|
+
concurrent-ruby (1.1.9)
|
14
22
|
crack (0.4.5)
|
15
23
|
rexml
|
16
24
|
diff-lcs (1.4.4)
|
17
25
|
dotenv (2.7.6)
|
26
|
+
faraday (1.8.0)
|
27
|
+
faraday-em_http (~> 1.0)
|
28
|
+
faraday-em_synchrony (~> 1.0)
|
29
|
+
faraday-excon (~> 1.1)
|
30
|
+
faraday-httpclient (~> 1.0.1)
|
31
|
+
faraday-net_http (~> 1.0)
|
32
|
+
faraday-net_http_persistent (~> 1.1)
|
33
|
+
faraday-patron (~> 1.0)
|
34
|
+
faraday-rack (~> 1.0)
|
35
|
+
multipart-post (>= 1.2, < 3)
|
36
|
+
ruby2_keywords (>= 0.0.4)
|
37
|
+
faraday-em_http (1.0.0)
|
38
|
+
faraday-em_synchrony (1.0.0)
|
39
|
+
faraday-excon (1.1.0)
|
40
|
+
faraday-httpclient (1.0.1)
|
41
|
+
faraday-net_http (1.0.1)
|
42
|
+
faraday-net_http_persistent (1.2.0)
|
43
|
+
faraday-patron (1.0.0)
|
44
|
+
faraday-rack (1.0.0)
|
45
|
+
faraday_middleware (1.1.0)
|
46
|
+
faraday (~> 1.0)
|
18
47
|
hashdiff (1.0.1)
|
19
|
-
|
20
|
-
|
21
|
-
multi_xml (>= 0.5.2)
|
48
|
+
i18n (1.8.10)
|
49
|
+
concurrent-ruby (~> 1.0)
|
22
50
|
method_source (1.0.0)
|
23
|
-
|
24
|
-
|
25
|
-
mime-types-data (3.2021.0901)
|
26
|
-
multi_xml (0.6.0)
|
51
|
+
minitest (5.14.4)
|
52
|
+
multipart-post (2.1.1)
|
27
53
|
parallel (1.20.1)
|
28
54
|
parser (3.0.1.1)
|
29
55
|
ast (~> 2.4.1)
|
@@ -63,22 +89,27 @@ GEM
|
|
63
89
|
rubocop (>= 1.7.0, < 2.0)
|
64
90
|
rubocop-ast (>= 0.4.0)
|
65
91
|
ruby-progressbar (1.11.0)
|
92
|
+
ruby2_keywords (0.0.5)
|
66
93
|
standard (1.1.1)
|
67
94
|
rubocop (= 1.14.0)
|
68
95
|
rubocop-performance (= 1.11.2)
|
69
96
|
standardrb (1.0.0)
|
70
97
|
standard
|
98
|
+
tzinfo (2.0.4)
|
99
|
+
concurrent-ruby (~> 1.0)
|
71
100
|
unicode-display_width (2.0.0)
|
72
101
|
webmock (3.12.2)
|
73
102
|
addressable (>= 2.3.6)
|
74
103
|
crack (>= 0.3.2)
|
75
104
|
hashdiff (>= 0.4.0, < 2.0.0)
|
105
|
+
zeitwerk (2.4.2)
|
76
106
|
|
77
107
|
PLATFORMS
|
78
108
|
ruby
|
79
109
|
x64-mingw32
|
80
110
|
|
81
111
|
DEPENDENCIES
|
112
|
+
activesupport (~> 6.1)
|
82
113
|
dotenv (~> 2.7)
|
83
114
|
notion-sdk-ruby!
|
84
115
|
pry (~> 0.14.1)
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Notion
|
2
|
+
class List
|
3
|
+
attr_reader :data, :next_cursor, :has_more
|
4
|
+
|
5
|
+
def initialize(response_body)
|
6
|
+
@data = response_body["results"].map do |d|
|
7
|
+
get_model(d["object"]).new(d)
|
8
|
+
end
|
9
|
+
|
10
|
+
@next_cursor = response_body["next_cursor"]
|
11
|
+
@has_more = response_body["has_more"]
|
12
|
+
end
|
13
|
+
|
14
|
+
def get_model(object_name)
|
15
|
+
case object_name
|
16
|
+
when "block"
|
17
|
+
Block
|
18
|
+
when "database"
|
19
|
+
Database
|
20
|
+
when "page"
|
21
|
+
Page
|
22
|
+
when "user"
|
23
|
+
User
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -1,49 +1,44 @@
|
|
1
1
|
module Notion
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
base_uri "https://api.notion.com"
|
6
|
-
headers "Content-Type": "application/json"
|
7
|
-
|
8
|
-
def self.active_client
|
9
|
-
RequestClient.new(Notion.config)
|
2
|
+
module RequestClient
|
3
|
+
def get(*args)
|
4
|
+
handle_request(:get, *args)
|
10
5
|
end
|
11
6
|
|
12
|
-
def
|
13
|
-
|
14
|
-
self.class.headers "Notion-Version": config.notion_version
|
7
|
+
def post(*args)
|
8
|
+
handle_request(:post, *args)
|
15
9
|
end
|
16
10
|
|
17
|
-
def
|
18
|
-
|
19
|
-
raise_on_failure(response)
|
11
|
+
def patch(*args)
|
12
|
+
handle_request(:patch, *args)
|
20
13
|
end
|
21
14
|
|
22
|
-
def
|
23
|
-
|
24
|
-
raise_on_failure(response)
|
15
|
+
def delete(*args)
|
16
|
+
handle_request(:delete, *args)
|
25
17
|
end
|
26
18
|
|
27
|
-
|
28
|
-
response = self.class.patch(*args, &block)
|
29
|
-
raise_on_failure(response)
|
30
|
-
end
|
31
|
-
|
32
|
-
def put(*args, &block)
|
33
|
-
response = self.class.put(*args, &block)
|
34
|
-
raise_on_failure(response)
|
35
|
-
end
|
19
|
+
private
|
36
20
|
|
37
|
-
def
|
38
|
-
|
39
|
-
|
21
|
+
def handle_request(method, *args)
|
22
|
+
faraday_client.public_send(method, *args)
|
23
|
+
rescue Faraday::ClientError => error
|
24
|
+
error_details = JSON.parse(error.response[:body])
|
25
|
+
raise ErrorFactory.create(error_details)
|
26
|
+
rescue JSON::ParserError => error
|
27
|
+
raise NotionError.new(error.message)
|
40
28
|
end
|
41
29
|
|
42
|
-
def
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
30
|
+
def faraday_client
|
31
|
+
@faraday_client ||= Faraday.new(
|
32
|
+
url: "https://api.notion.com",
|
33
|
+
headers: {
|
34
|
+
"Content-Type" => "application/json",
|
35
|
+
"Notion-Version" => Notion.config.notion_version,
|
36
|
+
"Authorization" => "Bearer #{Notion.config.api_token}"
|
37
|
+
}
|
38
|
+
) do |f|
|
39
|
+
f.request :json
|
40
|
+
f.response :json
|
41
|
+
f.use Faraday::Response::RaiseError
|
47
42
|
end
|
48
43
|
end
|
49
44
|
end
|
@@ -1,25 +1,33 @@
|
|
1
1
|
module Notion
|
2
2
|
class Blocks
|
3
|
+
include RequestClient
|
4
|
+
|
3
5
|
def children
|
4
6
|
Children.new
|
5
7
|
end
|
6
8
|
|
7
9
|
def retrieve(block_id)
|
8
|
-
|
10
|
+
response = get("/v1/blocks/#{block_id}")
|
11
|
+
Block.new(response.body)
|
9
12
|
end
|
10
13
|
|
11
14
|
def update(block_id, body)
|
12
|
-
|
15
|
+
response = patch("/v1/blocks/#{block_id}", body.to_json)
|
16
|
+
Block.new(response.body)
|
13
17
|
end
|
14
18
|
end
|
15
19
|
|
16
20
|
class Children
|
21
|
+
include RequestClient
|
22
|
+
|
17
23
|
def list(block_id, query: {})
|
18
|
-
|
24
|
+
response = get("/v1/blocks/#{block_id}/children", query: query)
|
25
|
+
List.new(response.body)
|
19
26
|
end
|
20
27
|
|
21
28
|
def append(block_id, body)
|
22
|
-
|
29
|
+
response = patch("/v1/blocks/#{block_id}/children", body.to_json)
|
30
|
+
Block.new(response.body)
|
23
31
|
end
|
24
32
|
end
|
25
33
|
end
|
@@ -1,25 +1,32 @@
|
|
1
1
|
module Notion
|
2
2
|
class Databases
|
3
|
+
include RequestClient
|
4
|
+
|
3
5
|
def retrieve(id)
|
4
|
-
|
6
|
+
response = get("/v1/databases/#{id}")
|
7
|
+
Database.new(response.body)
|
5
8
|
end
|
6
9
|
|
7
10
|
# DEPRECATED
|
8
11
|
def list
|
9
12
|
warn "DEPRECATED: client.databases.list is deprecated."
|
10
|
-
|
13
|
+
response = get("/v1/databases")
|
14
|
+
List.new(response.body)
|
11
15
|
end
|
12
16
|
|
13
17
|
def query(id, body)
|
14
|
-
|
18
|
+
response = post("/v1/databases/#{id}/query", body.to_json)
|
19
|
+
List.new(response.body)
|
15
20
|
end
|
16
21
|
|
17
22
|
def create(body)
|
18
|
-
|
23
|
+
response = post("/v1/databases", body.to_json)
|
24
|
+
Database.new(response.body)
|
19
25
|
end
|
20
26
|
|
21
27
|
def update(id, body)
|
22
|
-
|
28
|
+
response = patch("/v1/databases/#{id}", body.to_json)
|
29
|
+
Database.new(response.body)
|
23
30
|
end
|
24
31
|
end
|
25
32
|
end
|
@@ -1,15 +1,20 @@
|
|
1
1
|
module Notion
|
2
2
|
class Pages
|
3
|
+
include RequestClient
|
4
|
+
|
3
5
|
def retrieve(id)
|
4
|
-
|
6
|
+
response = get("/v1/pages/#{id}")
|
7
|
+
Page.new(response.body)
|
5
8
|
end
|
6
9
|
|
7
10
|
def create(body)
|
8
|
-
|
11
|
+
response = post("/v1/pages", body.to_json)
|
12
|
+
Page.new(response.body)
|
9
13
|
end
|
10
14
|
|
11
15
|
def update(id, body)
|
12
|
-
|
16
|
+
response = patch("/v1/pages/#{id}", body.to_json)
|
17
|
+
Page.new(response.body)
|
13
18
|
end
|
14
19
|
end
|
15
20
|
end
|
@@ -1,11 +1,15 @@
|
|
1
1
|
module Notion
|
2
2
|
class Users
|
3
|
+
include RequestClient
|
4
|
+
|
3
5
|
def list
|
4
|
-
|
6
|
+
response = get("/v1/users")
|
7
|
+
List.new(response.body)
|
5
8
|
end
|
6
9
|
|
7
10
|
def retrieve(id)
|
8
|
-
|
11
|
+
response = get("/v1/users/#{id}")
|
12
|
+
User.new(response.body)
|
9
13
|
end
|
10
14
|
end
|
11
15
|
end
|
data/lib/notion-sdk-ruby.rb
CHANGED
@@ -1,17 +1,23 @@
|
|
1
|
-
require "
|
1
|
+
require "faraday"
|
2
|
+
require "faraday_middleware"
|
2
3
|
require "forwardable"
|
4
|
+
require "ostruct"
|
3
5
|
|
4
6
|
require "notion-sdk-ruby/version"
|
5
|
-
|
6
7
|
require "notion-sdk-ruby/config"
|
8
|
+
require "notion-sdk-ruby/request_client"
|
7
9
|
require "notion-sdk-ruby/resources/blocks"
|
8
10
|
require "notion-sdk-ruby/resources/databases"
|
9
11
|
require "notion-sdk-ruby/resources/pages"
|
10
12
|
require "notion-sdk-ruby/resources/users"
|
11
13
|
require "notion-sdk-ruby/operations/search"
|
12
14
|
require "notion-sdk-ruby/error"
|
13
|
-
require "notion-sdk-ruby/request_client"
|
14
15
|
require "notion-sdk-ruby/client"
|
16
|
+
require "notion-sdk-ruby/models/user"
|
17
|
+
require "notion-sdk-ruby/models/list"
|
18
|
+
require "notion-sdk-ruby/models/block"
|
19
|
+
require "notion-sdk-ruby/models/database"
|
20
|
+
require "notion-sdk-ruby/models/page"
|
15
21
|
|
16
22
|
module Notion
|
17
23
|
@config = Config.new
|
data/notion-sdk-ruby.gemspec
CHANGED
@@ -26,7 +26,8 @@ Gem::Specification.new do |spec|
|
|
26
26
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
27
27
|
spec.require_paths = ["lib"]
|
28
28
|
|
29
|
-
spec.add_dependency "
|
29
|
+
spec.add_dependency "faraday", "~> 1.8"
|
30
|
+
spec.add_dependency "faraday_middleware", "~> 1.1"
|
30
31
|
|
31
32
|
spec.add_development_dependency "rake", "~> 12.0"
|
32
33
|
spec.add_development_dependency "rspec", "~> 3.0"
|
@@ -34,4 +35,5 @@ Gem::Specification.new do |spec|
|
|
34
35
|
spec.add_development_dependency "webmock", "~> 3.12"
|
35
36
|
spec.add_development_dependency "pry", "~> 0.14.1"
|
36
37
|
spec.add_development_dependency "dotenv", "~> 2.7"
|
38
|
+
spec.add_development_dependency "activesupport", "~> 6.1"
|
37
39
|
end
|
metadata
CHANGED
@@ -1,29 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: notion-sdk-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Graham Marlow
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-09-
|
11
|
+
date: 2021-09-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: faraday
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: '1.8'
|
20
20
|
type: :runtime
|
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: '1.8'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: faraday_middleware
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.1'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.1'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: rake
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,6 +122,20 @@ dependencies:
|
|
108
122
|
- - "~>"
|
109
123
|
- !ruby/object:Gem::Version
|
110
124
|
version: '2.7'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: activesupport
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '6.1'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '6.1'
|
111
139
|
description:
|
112
140
|
email:
|
113
141
|
- mgmarlow@hey.com
|
@@ -131,6 +159,11 @@ files:
|
|
131
159
|
- lib/notion-sdk-ruby/client.rb
|
132
160
|
- lib/notion-sdk-ruby/config.rb
|
133
161
|
- lib/notion-sdk-ruby/error.rb
|
162
|
+
- lib/notion-sdk-ruby/models/block.rb
|
163
|
+
- lib/notion-sdk-ruby/models/database.rb
|
164
|
+
- lib/notion-sdk-ruby/models/list.rb
|
165
|
+
- lib/notion-sdk-ruby/models/page.rb
|
166
|
+
- lib/notion-sdk-ruby/models/user.rb
|
134
167
|
- lib/notion-sdk-ruby/operations/search.rb
|
135
168
|
- lib/notion-sdk-ruby/request_client.rb
|
136
169
|
- lib/notion-sdk-ruby/resources/blocks.rb
|