notion-sdk-ruby 0.3.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -1,11 +1,11 @@
1
- #!/usr/bin/env ruby
2
-
3
- require "bundler/setup"
4
- require "pry"
5
- require 'dotenv/load'
6
-
7
- require "notion-sdk-ruby"
8
-
9
- $client = Notion::Client.new(token: ENV["API_SECRET"])
10
-
11
- Pry.start
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "pry"
5
+ require 'dotenv/load'
6
+
7
+ require "notion-sdk-ruby"
8
+
9
+ $client = Notion::Client.new(token: ENV["API_SECRET"])
10
+
11
+ Pry.start
data/bin/setup CHANGED
@@ -1,8 +1,8 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
- IFS=$'\n\t'
4
- set -vx
5
-
6
- bundle install
7
-
8
- # Do any other automated setup that you need to do here
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -1,27 +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
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
@@ -1,26 +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
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
@@ -1,5 +1,5 @@
1
- module Notion
2
- class Config
3
- attr_accessor :api_token, :notion_version
4
- end
5
- end
1
+ module Notion
2
+ class Config
3
+ attr_accessor :api_token, :notion_version
4
+ end
5
+ end
@@ -1,52 +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
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
@@ -1,9 +1,9 @@
1
- module Notion
2
- module Operations
3
- module Search
4
- def search(body)
5
- RequestClient.active_client.post("/v1/search", body: body.to_json)
6
- end
7
- end
8
- end
9
- end
1
+ module Notion
2
+ module Operations
3
+ module Search
4
+ def search(body)
5
+ RequestClient.active_client.post("/v1/search", body: body.to_json)
6
+ end
7
+ end
8
+ end
9
+ end
@@ -1,50 +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
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
@@ -1,17 +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
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
@@ -1,15 +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
- end
15
- end
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