notion-sdk-ruby 0.2.2 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +34 -0
- data/Gemfile +4 -4
- data/Gemfile.lock +3 -3
- data/README.md +79 -27
- data/Rakefile +7 -7
- data/bin/console +1 -1
- data/lib/notion-sdk-ruby.rb +27 -0
- data/lib/notion-sdk-ruby/client.rb +26 -0
- data/lib/notion-sdk-ruby/config.rb +5 -0
- data/lib/notion-sdk-ruby/error.rb +52 -0
- data/lib/notion-sdk-ruby/operations/search.rb +9 -0
- data/lib/notion-sdk-ruby/request_client.rb +50 -0
- data/lib/notion-sdk-ruby/resources/blocks.rb +17 -0
- data/lib/notion-sdk-ruby/resources/databases.rb +19 -0
- data/lib/notion-sdk-ruby/resources/pages.rb +15 -0
- data/lib/notion-sdk-ruby/resources/users.rb +11 -0
- data/lib/notion-sdk-ruby/version.rb +3 -0
- data/notion-sdk-ruby.gemspec +37 -35
- metadata +19 -17
- data/.github/workflows/ruby.yml +0 -35
- data/lib/notion.rb +0 -13
- data/lib/notion/client.rb +0 -12
- data/lib/notion/endpoints.rb +0 -9
- data/lib/notion/endpoints/blocks.rb +0 -13
- data/lib/notion/endpoints/databases.rb +0 -17
- data/lib/notion/endpoints/pages.rb +0 -17
- data/lib/notion/endpoints/search.rb +0 -9
- data/lib/notion/endpoints/users.rb +0 -13
- data/lib/notion/version.rb +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2b8f9260f352a244eaf86cd39b5724c874929548ebf289f795755d2e63aa09b8
|
4
|
+
data.tar.gz: f7c63168582a3f7d7c0b898fb0bcd85338c26c816782cd8d222fde67c1418d80
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f9e01092c18da58fb6d9e813cfdea77f96deb71295c525f7942cf7e125fd70106d4a33e414513fa2e6282849ea84787552397e6d009272480b11801c93509925
|
7
|
+
data.tar.gz: fcec5ce30ef130a1c54582cef9bd792729acb134c3b81a860a9b939f198fd115c79ef5d8ea4481723a6ee345b116cf9fb81b5aedf03d373cfab33853700e1543
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# This workflow uses actions that are not certified by GitHub.
|
2
|
+
# They are provided by a third-party and are governed by
|
3
|
+
# separate terms of service, privacy policy, and support
|
4
|
+
# documentation.
|
5
|
+
# This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
|
6
|
+
# For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
|
7
|
+
|
8
|
+
name: ci
|
9
|
+
|
10
|
+
on:
|
11
|
+
push:
|
12
|
+
branches: [main]
|
13
|
+
pull_request:
|
14
|
+
branches: [main]
|
15
|
+
|
16
|
+
jobs:
|
17
|
+
test:
|
18
|
+
runs-on: ubuntu-latest
|
19
|
+
strategy:
|
20
|
+
matrix:
|
21
|
+
ruby-version: ["2.6", "2.7", "3.0"]
|
22
|
+
|
23
|
+
steps:
|
24
|
+
- uses: actions/checkout@v2
|
25
|
+
- name: Set up Ruby
|
26
|
+
# To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
|
27
|
+
# change this to (see https://github.com/ruby/setup-ruby#versioning):
|
28
|
+
# uses: ruby/setup-ruby@v1
|
29
|
+
uses: ruby/setup-ruby@473e4d8fe5dd94ee328fdfca9f8c9c7afc9dae5e
|
30
|
+
with:
|
31
|
+
ruby-version: ${{ matrix.ruby-version }}
|
32
|
+
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
|
33
|
+
- name: Run tests
|
34
|
+
run: bundle exec rake
|
data/Gemfile
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
source "https://rubygems.org"
|
2
|
-
|
3
|
-
# Specify your gem's dependencies in notion-sdk-ruby.gemspec
|
4
|
-
gemspec
|
1
|
+
source "https://rubygems.org"
|
2
|
+
|
3
|
+
# Specify your gem's dependencies in notion-sdk-ruby.gemspec
|
4
|
+
gemspec
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
notion-sdk-ruby (0.
|
4
|
+
notion-sdk-ruby (0.4.0)
|
5
5
|
httparty (~> 0.18.1)
|
6
6
|
|
7
7
|
GEM
|
@@ -22,7 +22,7 @@ GEM
|
|
22
22
|
method_source (1.0.0)
|
23
23
|
mime-types (3.3.1)
|
24
24
|
mime-types-data (~> 3.2015)
|
25
|
-
mime-types-data (3.2021.
|
25
|
+
mime-types-data (3.2021.0704)
|
26
26
|
multi_xml (0.6.0)
|
27
27
|
parallel (1.20.1)
|
28
28
|
parser (3.0.1.1)
|
@@ -88,4 +88,4 @@ DEPENDENCIES
|
|
88
88
|
webmock (~> 3.12)
|
89
89
|
|
90
90
|
BUNDLED WITH
|
91
|
-
2.
|
91
|
+
2.2.3
|
data/README.md
CHANGED
@@ -1,7 +1,34 @@
|
|
1
1
|
# Notion Ruby SDK
|
2
2
|
|
3
|
+
[![ci](https://github.com/mgmarlow/notion-sdk-ruby/actions/workflows/ci.yml/badge.svg)](https://github.com/mgmarlow/notion-sdk-ruby/actions/workflows/ci.yml)
|
4
|
+
[![Gem Version](https://badge.fury.io/rb/notion-sdk-ruby.svg)](https://badge.fury.io/rb/notion-sdk-ruby)
|
5
|
+
|
3
6
|
Unofficial Ruby client for the [Notion APIs](https://developers.notion.com/).
|
4
7
|
|
8
|
+
- [Notion Ruby SDK](#notion-ruby-sdk)
|
9
|
+
- [Installation](#installation)
|
10
|
+
- [Usage](#usage)
|
11
|
+
- [API reference](#api-reference)
|
12
|
+
- [Databases](#databases)
|
13
|
+
- [databases#retrieve](#databasesretrieve)
|
14
|
+
- [databases#list](#databaseslist)
|
15
|
+
- [databases#query](#databasesquery)
|
16
|
+
- [Pages](#pages)
|
17
|
+
- [pages#retrieve](#pagesretrieve)
|
18
|
+
- [pages#create](#pagescreate)
|
19
|
+
- [pages#update](#pagesupdate)
|
20
|
+
- [Blocks](#blocks)
|
21
|
+
- [blocks#children#list](#blockschildrenlist)
|
22
|
+
- [blocks#children#append](#blockschildrenappend)
|
23
|
+
- [Users](#users)
|
24
|
+
- [users#retrieve](#usersretrieve)
|
25
|
+
- [users#list](#userslist)
|
26
|
+
- [Search](#search)
|
27
|
+
- [#search](#search-1)
|
28
|
+
- [Development](#development)
|
29
|
+
- [Contributing](#contributing)
|
30
|
+
- [License](#license)
|
31
|
+
|
5
32
|
## Installation
|
6
33
|
|
7
34
|
Add this line to your application's Gemfile:
|
@@ -14,10 +41,6 @@ And then execute:
|
|
14
41
|
|
15
42
|
$ bundle install
|
16
43
|
|
17
|
-
Or install it yourself as:
|
18
|
-
|
19
|
-
$ gem install notion-sdk-ruby
|
20
|
-
|
21
44
|
## Usage
|
22
45
|
|
23
46
|
Initialize `Notion::Client` with your app's [integration secret](https://developers.notion.com/docs/getting-started#create-a-new-integration).
|
@@ -25,29 +48,34 @@ Initialize `Notion::Client` with your app's [integration secret](https://develop
|
|
25
48
|
```rb
|
26
49
|
require "notion-sdk-ruby"
|
27
50
|
client = Notion::Client.new(token: ENV["NOTION_API_SECRET"])
|
28
|
-
|
29
|
-
# get users
|
30
|
-
client.get_users
|
31
51
|
```
|
32
52
|
|
53
|
+
## API reference
|
54
|
+
|
33
55
|
### Databases
|
34
56
|
|
35
|
-
#### #
|
57
|
+
#### databases#retrieve
|
58
|
+
|
59
|
+
[API reference](https://developers.notion.com/reference/get-database)
|
36
60
|
|
37
61
|
```rb
|
38
|
-
client.
|
62
|
+
client.databases.retrieve("668d797c-76fa-4934-9b05-ad288df2d136")
|
39
63
|
```
|
40
64
|
|
41
|
-
#### #
|
65
|
+
#### databases#list
|
66
|
+
|
67
|
+
[API reference](https://developers.notion.com/reference/get-databases)
|
42
68
|
|
43
69
|
```rb
|
44
|
-
client.
|
70
|
+
client.databases.list
|
45
71
|
```
|
46
72
|
|
47
|
-
#### #
|
73
|
+
#### databases#query
|
74
|
+
|
75
|
+
[API reference](https://developers.notion.com/reference/post-database-query)
|
48
76
|
|
49
77
|
```rb
|
50
|
-
client.
|
78
|
+
client.databases.query("668d797c-76fa-4934-9b05-ad288df2d136", {
|
51
79
|
"filter": {
|
52
80
|
"or": [
|
53
81
|
{
|
@@ -75,16 +103,20 @@ client.query_database("668d797c-76fa-4934-9b05-ad288df2d136", {
|
|
75
103
|
|
76
104
|
### Pages
|
77
105
|
|
78
|
-
#### #
|
106
|
+
#### pages#retrieve
|
107
|
+
|
108
|
+
[API reference](https://developers.notion.com/reference/get-page)
|
79
109
|
|
80
110
|
```rb
|
81
|
-
client.
|
111
|
+
client.pages.retrieve("b55c9c91-384d-452b-81db-d1ef79372b75")
|
82
112
|
```
|
83
113
|
|
84
|
-
#### #
|
114
|
+
#### pages#create
|
115
|
+
|
116
|
+
[API reference](https://developers.notion.com/reference/post-page)
|
85
117
|
|
86
118
|
```rb
|
87
|
-
client.
|
119
|
+
client.pages.create({
|
88
120
|
"parent": { "database_id": "48f8fee9cd794180bc2fec0398253067" },
|
89
121
|
"properties": {
|
90
122
|
"Name": {
|
@@ -116,10 +148,12 @@ client.create_page({
|
|
116
148
|
})
|
117
149
|
```
|
118
150
|
|
119
|
-
#### #
|
151
|
+
#### pages#update
|
152
|
+
|
153
|
+
[API reference](https://developers.notion.com/reference/patch-page)
|
120
154
|
|
121
155
|
```rb
|
122
|
-
client.
|
156
|
+
client.pages.update("b55c9c91-384d-452b-81db-d1ef79372b75", {
|
123
157
|
"properties": {
|
124
158
|
"In stock": { "checkbox": true }
|
125
159
|
}
|
@@ -128,18 +162,22 @@ client.update_page("b55c9c91-384d-452b-81db-d1ef79372b75", {
|
|
128
162
|
|
129
163
|
### Blocks
|
130
164
|
|
131
|
-
#### #
|
165
|
+
#### blocks#children#list
|
166
|
+
|
167
|
+
[API reference](https://developers.notion.com/reference/get-block-children)
|
132
168
|
|
133
169
|
```rb
|
134
|
-
client.
|
170
|
+
client.blocks.children.list("b55c9c91-384d-452b-81db-d1ef79372b75", {
|
135
171
|
page_size: 100
|
136
172
|
})
|
137
173
|
```
|
138
174
|
|
139
|
-
#### #
|
175
|
+
#### blocks#children#append
|
176
|
+
|
177
|
+
[API reference](https://developers.notion.com/reference/patch-block-children)
|
140
178
|
|
141
179
|
```rb
|
142
|
-
client.
|
180
|
+
client.blocks.children.append("b54c9c91-384d-452b-81db-d1ef79372b75", {
|
143
181
|
"children": [
|
144
182
|
{
|
145
183
|
"object": "block",
|
@@ -169,20 +207,26 @@ client.append_block_children("b54c9c91-384d-452b-81db-d1ef79372b75", {
|
|
169
207
|
|
170
208
|
### Users
|
171
209
|
|
172
|
-
#### #
|
210
|
+
#### users#retrieve
|
211
|
+
|
212
|
+
[API reference](https://developers.notion.com/reference/get-user)
|
173
213
|
|
174
214
|
```rb
|
175
|
-
client.
|
215
|
+
client.users.retrieve("d40e767c-d7af-4b18-a86d-55c61f1e39a4")
|
176
216
|
```
|
177
217
|
|
178
|
-
#### #
|
218
|
+
#### users#list
|
219
|
+
|
220
|
+
[API reference](https://developers.notion.com/reference/get-users)
|
179
221
|
|
180
222
|
```rb
|
181
|
-
client.
|
223
|
+
client.users.list
|
182
224
|
```
|
183
225
|
|
184
226
|
### Search
|
185
227
|
|
228
|
+
[API reference](https://developers.notion.com/reference/post-search)
|
229
|
+
|
186
230
|
#### #search
|
187
231
|
|
188
232
|
```rb
|
@@ -200,6 +244,14 @@ client.search({
|
|
200
244
|
|
201
245
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
202
246
|
|
247
|
+
Before using `bin/console` you need to create a new file, `.env`, at the root project directory. This will enable you to run commands directly against your [Notion integration](https://developers.notion.com/docs/getting-started).
|
248
|
+
|
249
|
+
```
|
250
|
+
cat > .env <<EOF
|
251
|
+
API_SECRET=<YOUR NOTION API SECRET HERE>
|
252
|
+
EOF
|
253
|
+
```
|
254
|
+
|
203
255
|
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
204
256
|
|
205
257
|
## Contributing
|
data/Rakefile
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
require "bundler/gem_tasks"
|
2
|
-
require "rspec/core/rake_task"
|
3
|
-
require "standard/rake"
|
4
|
-
|
5
|
-
RSpec::Core::RakeTask.new(:spec)
|
6
|
-
|
7
|
-
task default: [:spec, :standard]
|
1
|
+
require "bundler/gem_tasks"
|
2
|
+
require "rspec/core/rake_task"
|
3
|
+
require "standard/rake"
|
4
|
+
|
5
|
+
RSpec::Core::RakeTask.new(:spec)
|
6
|
+
|
7
|
+
task default: [:spec, :standard]
|
data/bin/console
CHANGED
@@ -0,0 +1,27 @@
|
|
1
|
+
require "httparty"
|
2
|
+
require "forwardable"
|
3
|
+
|
4
|
+
require "notion-sdk-ruby/version"
|
5
|
+
|
6
|
+
require "notion-sdk-ruby/config"
|
7
|
+
require "notion-sdk-ruby/resources/blocks"
|
8
|
+
require "notion-sdk-ruby/resources/databases"
|
9
|
+
require "notion-sdk-ruby/resources/pages"
|
10
|
+
require "notion-sdk-ruby/resources/users"
|
11
|
+
require "notion-sdk-ruby/operations/search"
|
12
|
+
require "notion-sdk-ruby/error"
|
13
|
+
require "notion-sdk-ruby/request_client"
|
14
|
+
require "notion-sdk-ruby/client"
|
15
|
+
|
16
|
+
module Notion
|
17
|
+
@config = Config.new
|
18
|
+
|
19
|
+
class << self
|
20
|
+
extend Forwardable
|
21
|
+
|
22
|
+
attr_reader :config
|
23
|
+
|
24
|
+
def_delegators :@config, :api_token, :api_token=
|
25
|
+
def_delegators :@config, :notion_version, :notion_version=
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Notion
|
2
|
+
class Client
|
3
|
+
include Operations::Search
|
4
|
+
|
5
|
+
def initialize(token:, notion_version: "2021-05-13")
|
6
|
+
Notion.api_token = token
|
7
|
+
Notion.notion_version = notion_version
|
8
|
+
end
|
9
|
+
|
10
|
+
def blocks
|
11
|
+
Blocks.new
|
12
|
+
end
|
13
|
+
|
14
|
+
def databases
|
15
|
+
Databases.new
|
16
|
+
end
|
17
|
+
|
18
|
+
def pages
|
19
|
+
Pages.new
|
20
|
+
end
|
21
|
+
|
22
|
+
def users
|
23
|
+
Users.new
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# Sourced from notion-sdk-js:
|
2
|
+
# https://github.com/makenotion/notion-sdk-js/blob/main/src/errors.ts
|
3
|
+
module Notion
|
4
|
+
API_ERROR_CODE = {
|
5
|
+
unauthorized: "unauthorized",
|
6
|
+
restricted_resource: "restricted_resource",
|
7
|
+
object_not_found: "object_not_found",
|
8
|
+
rate_limited: "rate_limited",
|
9
|
+
invalid_json: "invalid_json",
|
10
|
+
invalid_request_url: "invalid_request_url",
|
11
|
+
invalid_request: "invalid_request",
|
12
|
+
validation_error: "validation_error",
|
13
|
+
conflict_error: "conflict_error",
|
14
|
+
internal_server_error: "internal_server_error",
|
15
|
+
service_unavailable: "service_unavailable"
|
16
|
+
}
|
17
|
+
|
18
|
+
class ErrorFactory
|
19
|
+
def self.create(error = {})
|
20
|
+
return NotionError.new("Unknown error.") if error["message"].nil?
|
21
|
+
|
22
|
+
if API_ERROR_CODE.value?(error["code"])
|
23
|
+
APIResponseError.new(error["message"], body: error)
|
24
|
+
elsif error["request"] && error["response"] && error["timings"]
|
25
|
+
HTTPResponseError.new(error["message"], body: error)
|
26
|
+
elsif error["request"] && error["timings"]
|
27
|
+
RequestTimeoutError.new(error["message"], body: error)
|
28
|
+
else
|
29
|
+
NotionError.new(error["message"])
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
class NotionError < StandardError
|
35
|
+
attr_reader :message, :body
|
36
|
+
|
37
|
+
def initialize(message = nil, body: nil)
|
38
|
+
@message = message
|
39
|
+
@body = body
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
class RequestTimeoutError < NotionError; end
|
44
|
+
|
45
|
+
class HTTPResponseError < NotionError; end
|
46
|
+
|
47
|
+
class APIResponseError < NotionError
|
48
|
+
def code
|
49
|
+
body["code"]
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module Notion
|
2
|
+
class RequestClient
|
3
|
+
include HTTParty
|
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)
|
10
|
+
end
|
11
|
+
|
12
|
+
def initialize(config)
|
13
|
+
self.class.headers Authorization: "Bearer #{config.api_token}"
|
14
|
+
self.class.headers "Notion-Version": config.notion_version
|
15
|
+
end
|
16
|
+
|
17
|
+
def get(*args, &block)
|
18
|
+
response = self.class.get(*args, &block)
|
19
|
+
raise_on_failure(response)
|
20
|
+
end
|
21
|
+
|
22
|
+
def post(*args, &block)
|
23
|
+
response = self.class.post(*args, &block)
|
24
|
+
raise_on_failure(response)
|
25
|
+
end
|
26
|
+
|
27
|
+
def patch(*args, &block)
|
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
|
36
|
+
|
37
|
+
def delete(*args, &block)
|
38
|
+
response = self.class.delete(*args, &block)
|
39
|
+
raise_on_failure(response)
|
40
|
+
end
|
41
|
+
|
42
|
+
def raise_on_failure(response)
|
43
|
+
if response.success?
|
44
|
+
response
|
45
|
+
else
|
46
|
+
raise ErrorFactory.create(response)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Notion
|
2
|
+
class Blocks
|
3
|
+
def children
|
4
|
+
Children.new
|
5
|
+
end
|
6
|
+
end
|
7
|
+
|
8
|
+
class Children
|
9
|
+
def list(block_id, query: {})
|
10
|
+
RequestClient.active_client.get("/v1/blocks/#{block_id}/children", query: query)
|
11
|
+
end
|
12
|
+
|
13
|
+
def append(block_id, body)
|
14
|
+
RequestClient.active_client.patch("/v1/blocks/#{block_id}/children", body: body.to_json)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Notion
|
2
|
+
class Databases
|
3
|
+
def retrieve(id)
|
4
|
+
RequestClient.active_client.get("/v1/databases/#{id}")
|
5
|
+
end
|
6
|
+
|
7
|
+
def list
|
8
|
+
RequestClient.active_client.get("/v1/databases")
|
9
|
+
end
|
10
|
+
|
11
|
+
def query(id, body)
|
12
|
+
RequestClient.active_client.post("/v1/databases/#{id}/query", body: body.to_json)
|
13
|
+
end
|
14
|
+
|
15
|
+
def create(body)
|
16
|
+
RequestClient.active_client.post("/v1/databases", body: body.to_json)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Notion
|
2
|
+
class Pages
|
3
|
+
def retrieve(id)
|
4
|
+
RequestClient.active_client.get("/v1/pages/#{id}")
|
5
|
+
end
|
6
|
+
|
7
|
+
def create(body)
|
8
|
+
RequestClient.active_client.post("/v1/pages", body: body.to_json)
|
9
|
+
end
|
10
|
+
|
11
|
+
def update(id, body)
|
12
|
+
RequestClient.active_client.patch("/v1/pages/#{id}", body: body.to_json)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/notion-sdk-ruby.gemspec
CHANGED
@@ -1,35 +1,37 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
spec.
|
7
|
-
spec.
|
8
|
-
|
9
|
-
spec.
|
10
|
-
|
11
|
-
spec.
|
12
|
-
spec.
|
13
|
-
|
14
|
-
spec.
|
15
|
-
|
16
|
-
spec.metadata["
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
spec.
|
26
|
-
|
27
|
-
spec.
|
28
|
-
|
29
|
-
spec.
|
30
|
-
|
31
|
-
spec.add_development_dependency
|
32
|
-
spec.add_development_dependency
|
33
|
-
spec.add_development_dependency
|
34
|
-
spec.add_development_dependency
|
35
|
-
|
1
|
+
lib = File.expand_path("../lib", __FILE__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
require_relative "lib/notion-sdk-ruby/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = "notion-sdk-ruby"
|
7
|
+
spec.version = Notion::VERSION
|
8
|
+
spec.authors = ["Graham Marlow"]
|
9
|
+
spec.email = ["mgmarlow@hey.com"]
|
10
|
+
|
11
|
+
spec.summary = "Notion SDK"
|
12
|
+
spec.homepage = "https://github.com/mgmarlow/notion-sdk-ruby"
|
13
|
+
spec.license = "MIT"
|
14
|
+
spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
|
15
|
+
|
16
|
+
spec.metadata["homepage_uri"] = spec.homepage
|
17
|
+
spec.metadata["source_code_uri"] = "https://github.com/mgmarlow/notion-sdk-ruby"
|
18
|
+
spec.metadata["changelog_uri"] = "https://github.com/mgmarlow/notion-sdk-ruby/blob/master/CHANGELOG.md"
|
19
|
+
|
20
|
+
# Specify which files should be added to the gem when it is released.
|
21
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
22
|
+
spec.files = Dir.chdir(File.expand_path("..", __FILE__)) do
|
23
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
24
|
+
end
|
25
|
+
spec.bindir = "exe"
|
26
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
27
|
+
spec.require_paths = ["lib"]
|
28
|
+
|
29
|
+
spec.add_dependency "httparty", "~> 0.18.1"
|
30
|
+
|
31
|
+
spec.add_development_dependency "rake", "~> 12.0"
|
32
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
33
|
+
spec.add_development_dependency "standardrb", "~> 1.0"
|
34
|
+
spec.add_development_dependency "webmock", "~> 3.12"
|
35
|
+
spec.add_development_dependency "pry", "~> 0.14.1"
|
36
|
+
spec.add_development_dependency "dotenv", "~> 2.7"
|
37
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
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.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Graham Marlow
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-07-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -108,14 +108,14 @@ dependencies:
|
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '2.7'
|
111
|
-
description:
|
111
|
+
description:
|
112
112
|
email:
|
113
113
|
- mgmarlow@hey.com
|
114
114
|
executables: []
|
115
115
|
extensions: []
|
116
116
|
extra_rdoc_files: []
|
117
117
|
files:
|
118
|
-
- ".github/workflows/
|
118
|
+
- ".github/workflows/ci.yml"
|
119
119
|
- ".gitignore"
|
120
120
|
- ".rspec"
|
121
121
|
- ".travis.yml"
|
@@ -127,15 +127,17 @@ files:
|
|
127
127
|
- Rakefile
|
128
128
|
- bin/console
|
129
129
|
- bin/setup
|
130
|
-
- lib/notion.rb
|
131
|
-
- lib/notion/client.rb
|
132
|
-
- lib/notion/
|
133
|
-
- lib/notion/
|
134
|
-
- lib/notion/
|
135
|
-
- lib/notion/
|
136
|
-
- lib/notion/
|
137
|
-
- lib/notion/
|
138
|
-
- lib/notion/
|
130
|
+
- lib/notion-sdk-ruby.rb
|
131
|
+
- lib/notion-sdk-ruby/client.rb
|
132
|
+
- lib/notion-sdk-ruby/config.rb
|
133
|
+
- lib/notion-sdk-ruby/error.rb
|
134
|
+
- lib/notion-sdk-ruby/operations/search.rb
|
135
|
+
- lib/notion-sdk-ruby/request_client.rb
|
136
|
+
- lib/notion-sdk-ruby/resources/blocks.rb
|
137
|
+
- lib/notion-sdk-ruby/resources/databases.rb
|
138
|
+
- lib/notion-sdk-ruby/resources/pages.rb
|
139
|
+
- lib/notion-sdk-ruby/resources/users.rb
|
140
|
+
- lib/notion-sdk-ruby/version.rb
|
139
141
|
- notion-sdk-ruby.gemspec
|
140
142
|
homepage: https://github.com/mgmarlow/notion-sdk-ruby
|
141
143
|
licenses:
|
@@ -144,7 +146,7 @@ metadata:
|
|
144
146
|
homepage_uri: https://github.com/mgmarlow/notion-sdk-ruby
|
145
147
|
source_code_uri: https://github.com/mgmarlow/notion-sdk-ruby
|
146
148
|
changelog_uri: https://github.com/mgmarlow/notion-sdk-ruby/blob/master/CHANGELOG.md
|
147
|
-
post_install_message:
|
149
|
+
post_install_message:
|
148
150
|
rdoc_options: []
|
149
151
|
require_paths:
|
150
152
|
- lib
|
@@ -159,8 +161,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
159
161
|
- !ruby/object:Gem::Version
|
160
162
|
version: '0'
|
161
163
|
requirements: []
|
162
|
-
rubygems_version: 3.
|
163
|
-
signing_key:
|
164
|
+
rubygems_version: 3.2.3
|
165
|
+
signing_key:
|
164
166
|
specification_version: 4
|
165
167
|
summary: Notion SDK
|
166
168
|
test_files: []
|
data/.github/workflows/ruby.yml
DELETED
@@ -1,35 +0,0 @@
|
|
1
|
-
# This workflow uses actions that are not certified by GitHub.
|
2
|
-
# They are provided by a third-party and are governed by
|
3
|
-
# separate terms of service, privacy policy, and support
|
4
|
-
# documentation.
|
5
|
-
# This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
|
6
|
-
# For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
|
7
|
-
|
8
|
-
name: Ruby
|
9
|
-
|
10
|
-
on:
|
11
|
-
push:
|
12
|
-
branches: [ main ]
|
13
|
-
pull_request:
|
14
|
-
branches: [ main ]
|
15
|
-
|
16
|
-
jobs:
|
17
|
-
test:
|
18
|
-
|
19
|
-
runs-on: ubuntu-latest
|
20
|
-
strategy:
|
21
|
-
matrix:
|
22
|
-
ruby-version: ['2.6', '2.7', '3.0']
|
23
|
-
|
24
|
-
steps:
|
25
|
-
- uses: actions/checkout@v2
|
26
|
-
- name: Set up Ruby
|
27
|
-
# To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
|
28
|
-
# change this to (see https://github.com/ruby/setup-ruby#versioning):
|
29
|
-
# uses: ruby/setup-ruby@v1
|
30
|
-
uses: ruby/setup-ruby@473e4d8fe5dd94ee328fdfca9f8c9c7afc9dae5e
|
31
|
-
with:
|
32
|
-
ruby-version: ${{ matrix.ruby-version }}
|
33
|
-
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
|
34
|
-
- name: Run tests
|
35
|
-
run: bundle exec rake
|
data/lib/notion.rb
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
require "httparty"
|
2
|
-
require "notion/version"
|
3
|
-
require "notion/endpoints/blocks"
|
4
|
-
require "notion/endpoints/databases"
|
5
|
-
require "notion/endpoints/pages"
|
6
|
-
require "notion/endpoints/search"
|
7
|
-
require "notion/endpoints/users"
|
8
|
-
require "notion/endpoints"
|
9
|
-
require "notion/client"
|
10
|
-
|
11
|
-
module Notion
|
12
|
-
class Error < StandardError; end
|
13
|
-
end
|
data/lib/notion/client.rb
DELETED
data/lib/notion/endpoints.rb
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
module Notion
|
2
|
-
module Endpoints
|
3
|
-
module Blocks
|
4
|
-
def get_block_children(id, params: {})
|
5
|
-
self.class.get("/v1/blocks/#{id}/children", query: params)
|
6
|
-
end
|
7
|
-
|
8
|
-
def append_block_children(id, body)
|
9
|
-
self.class.patch("/v1/blocks/#{id}/children", body: body.to_json)
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
module Notion
|
2
|
-
module Endpoints
|
3
|
-
module Databases
|
4
|
-
def get_database(id)
|
5
|
-
self.class.get("/v1/databases/#{id}")
|
6
|
-
end
|
7
|
-
|
8
|
-
def get_databases
|
9
|
-
self.class.get("/v1/databases")
|
10
|
-
end
|
11
|
-
|
12
|
-
def query_database(id, body)
|
13
|
-
self.class.post("/v1/databases/#{id}/query", body: body.to_json)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
module Notion
|
2
|
-
module Endpoints
|
3
|
-
module Pages
|
4
|
-
def get_page(id)
|
5
|
-
self.class.get("/v1/pages/#{id}")
|
6
|
-
end
|
7
|
-
|
8
|
-
def create_page(body)
|
9
|
-
self.class.post("/v1/pages", body: body.to_json)
|
10
|
-
end
|
11
|
-
|
12
|
-
def update_page(id, body)
|
13
|
-
self.class.patch("/v1/pages/#{id}", body: body.to_json)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
data/lib/notion/version.rb
DELETED