notion-ruby-client 1.1.0 → 1.2.0

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: 1a51902078e38a1689842f254fd2a33c05c9cf7ee7e516a0d74c79ae0cf06018
4
- data.tar.gz: 74cd639ca5b12e5c58bbc6e80b31b23bb29fc858e51fff6564afb4cc8079c120
3
+ metadata.gz: 8e4e676c9ca818a9cdcab31f6b085d00860bd74a102f668fdbe60cd209eaa442
4
+ data.tar.gz: 57c19debac66cc452d441ce718bdd4f1d410c2884ac1b422d75cfe0fa228b043
5
5
  SHA512:
6
- metadata.gz: b44e81d8f7acdd44845dcfc785555830adf556fe74d2ad1795913b131470dce9e315ce41051c0144aeb38b6c4385f3be3da01e039cabd682521f3929351af605
7
- data.tar.gz: 384c2a8dae62684800ec4af7dd52cc4c7b961f82a17e90e867e60bcdbc518e49a840b4c8707f5d76b5d7cc031f4c5c98e906913bb6e68bbaff64db409cfdf2d3
6
+ metadata.gz: fb1a69701d1b81d3209f9b4d36fb73e204d60fd6239be0b922fa7ea6ebf5ac24ec62bf7949cbfee34867ec5da706d1446ccde8a733d46eefad3fe6dda9cd2929
7
+ data.tar.gz: 38dde2575a611e67d4b6222f6c79299aef06869e72963765ba850ad567c1b36b77e5cb521c60c1ba9044537b6a4a7f781e276604e0770c61b69b96726596f97c
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ### 1.2.0 (2023-02-26)
2
+
3
+ #### New
4
+
5
+ - Add support for the following new endpoints (thanks @themoffatt!):
6
+ - [Create comment](https://developers.notion.com/reference/create-a-comment)
7
+ - [Retrieve comments](https://developers.notion.com/reference/retrieve-a-comment)
8
+
1
9
  ### 1.1.0 (2023-02-23)
2
10
 
3
11
  #### Breaking changes
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- notion-ruby-client (1.1.0)
4
+ notion-ruby-client (1.2.0)
5
5
  dotenv
6
6
  faraday (>= 2.0)
7
7
  faraday-mashify (>= 0.1.1)
data/README.md CHANGED
@@ -32,6 +32,10 @@ A Ruby client for the Notion API.
32
32
  - [Delete a block](#delete-a-block)
33
33
  - [Retrieve block children](#retrieve-block-children)
34
34
  - [Append block children](#append-block-children)
35
+ - [Comments](#comments)
36
+ - [Retrieve comments](#retrieve-comments-from-a-page-or-block-by-id)
37
+ - [Create a comment on a page](#create-a-comment-on-a-page)
38
+ - [Create a comment on a discussion](#create-a-comment-on-a-discussion)
35
39
  - [Users](#users)
36
40
  - [Retrieve your token's bot user](#retrieve-your-tokens-bot-user)
37
41
  - [Retrieve a user](#retrieve-a-user)
@@ -463,6 +467,43 @@ client.block_append_children(block_id: 'b55c9c91-384d-452b-81db-d1ef79372b75', c
463
467
 
464
468
  See the full endpoint documentation on [Notion Developers](https://developers.notion.com/reference/patch-block-children).
465
469
 
470
+ ### Comments
471
+
472
+ #### Retrieve comments from a page or block by id
473
+ ```ruby
474
+ client.retrieve_comments(block_id: '1a2f70ab26154dc7a838536a3f430af4')
475
+ ```
476
+ #### Create a comment on a page
477
+ ```ruby
478
+ options = {
479
+ parent: { page_id: '3e4bc91d36c74de595113b31c6fdb82c' },
480
+ rich_text: [
481
+ {
482
+ text: {
483
+ content: 'Hello world'
484
+ }
485
+ }
486
+ ]
487
+ }
488
+ client.create_comment(options)
489
+ ```
490
+ #### Create a comment on a discussion
491
+ ```ruby
492
+ options = {
493
+ discussion_id: 'ea116af4839c410bb4ac242a18dc4392',
494
+ rich_text: [
495
+ {
496
+ text: {
497
+ content: 'Hello world'
498
+ }
499
+ }
500
+ ]
501
+ }
502
+ client.create_comment(options)
503
+ ```
504
+
505
+ See the full endpoint documention on [Notion Developers](https://developers.notion.com/reference/comment-object).
506
+
466
507
  ### Users
467
508
 
468
509
  #### Retrieve your token's bot user
@@ -0,0 +1,61 @@
1
+ # frozen_string_literal: true
2
+ module Notion
3
+ module Api
4
+ module Endpoints
5
+ module Comments
6
+ #
7
+ # Retrieves a list of un-resolved Comment objects from a page or block.
8
+ #
9
+ # @option options [id] :block_id
10
+ # Block or page id to fetch comments for.
11
+ #
12
+ # @option options [start_cursor] :start_cursor
13
+ # If supplied, this endpoint will return a page
14
+ # of results starting after the cursor provided.
15
+ # If not supplied, this endpoint will return the
16
+ # first page of results.
17
+ #
18
+ # @option options [page_size] :page_size
19
+ # The number of items from the full list desired in the response.
20
+ # Maximum: 100
21
+ #
22
+ def retrieve_comments(options = {})
23
+ throw ArgumentError.new('Required arguments :block_id missing') if options[:block_id].nil?
24
+ if block_given?
25
+ Pagination::Cursor.new(self, :retrieve_comments, options).each do |page|
26
+ yield page
27
+ end
28
+ else
29
+ get('comments', options)
30
+ end
31
+ end
32
+
33
+ #
34
+ # Creates a comment in a page or existing discussion thread.
35
+ # There are two locations you can add a new comment to:
36
+ # - A page
37
+ # - An existing discussion thread
38
+ # If the intention is to add a new comment to a page, a parent object
39
+ # must be provided in the body params. Alternatively, if a new comment
40
+ # is being added to an existing discussion thread, the discussion_id string
41
+ # must be provided in the body params. Exactly one of these parameters must be provided.
42
+ #
43
+ # @option options [Object] :parent
44
+ # A page parent. Either this or a discussion_id is required (not both).
45
+ #
46
+ # @option options [UUID] :discussion_id
47
+ # A UUID identifier for a discussion thread. Either this or a parent object is required (not both).
48
+ #
49
+ # @option options [Object] :rich_text
50
+ # A rich text object.
51
+ def create_comment(options = {})
52
+ if options.dig(:parent, :page_id).nil? && options[:discussion_id].nil?
53
+ throw ArgumentError.new('Required argument :page_id or :discussion_id missing')
54
+ end
55
+ throw ArgumentError.new('Required argument :rich_text missing') if options[:rich_text].nil?
56
+ post('comments', options)
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
@@ -5,6 +5,7 @@ require_relative 'endpoints/databases'
5
5
  require_relative 'endpoints/pages'
6
6
  require_relative 'endpoints/users'
7
7
  require_relative 'endpoints/search'
8
+ require_relative 'endpoints/comments'
8
9
 
9
10
  module Notion
10
11
  module Api
@@ -14,6 +15,7 @@ module Notion
14
15
  include Pages
15
16
  include Users
16
17
  include Search
18
+ include Comments
17
19
  end
18
20
  end
19
21
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
  module Notion
3
- VERSION = '1.1.0'
3
+ VERSION = '1.2.0'
4
4
  NOTION_REQUEST_VERSION = '2022-02-22'
5
5
  end
@@ -0,0 +1,110 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://api.notion.com/v1/comments
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{"rich_text":[{"text":{"content":"test comment"}}],"discussion_id":"ea116af4839c410bb4ac242a18dc4392"}'
9
+ headers:
10
+ Accept:
11
+ - application/json; charset=utf-8
12
+ User-Agent:
13
+ - Notion Ruby Client/1.0.0
14
+ Authorization:
15
+ - Bearer <NOTION_API_TOKEN>
16
+ Notion-Version:
17
+ - '2022-02-22'
18
+ Content-Type:
19
+ - application/json
20
+ Accept-Encoding:
21
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
22
+ response:
23
+ status:
24
+ code: 200
25
+ message: OK
26
+ headers:
27
+ Date:
28
+ - Fri, 02 Sep 2022 16:29:26 GMT
29
+ Content-Type:
30
+ - application/json; charset=utf-8
31
+ Transfer-Encoding:
32
+ - chunked
33
+ Connection:
34
+ - keep-alive
35
+ Set-Cookie:
36
+ - notion_browser_id=060fba74-6b6c-4d17-bd99-ac0aaa23aefd; Domain=www.notion.so;
37
+ Path=/; Expires=Sat, 02 Sep 2023 16:29:26 GMT; Secure
38
+ - notion_check_cookie_consent=false; Domain=www.notion.so; Path=/; Expires=Sat,
39
+ 03 Sep 2022 16:29:26 GMT; Secure
40
+ Content-Security-Policy:
41
+ - "script-src 'self' 'unsafe-inline' 'unsafe-eval' https://gist.github.com https://apis.google.com
42
+ https://www.google.com https://www.gstatic.com https://cdn.amplitude.com https://api.amplitude.com
43
+ https://hkfxbbdzib.notion.so https://widget.intercom.io https://js.intercomcdn.com
44
+ https://static.zdassets.com https://api.smooch.io\t https://logs-01.loggly.com
45
+ https://http-inputs-notion.splunkcloud.com https://cdn.segment.com https://analytics.pgncs.notion.so
46
+ https://o324374.ingest.sentry.io https://checkout.stripe.com https://js.stripe.com
47
+ https://embed.typeform.com https://admin.typeform.com https://public.profitwell.com
48
+ js.sentry-cdn.com https://js.chilipiper.com https://platform.twitter.com https://cdn.syndication.twimg.com
49
+ https://accounts.google.com www.googletagmanager.com https://www.googleadservices.com
50
+ https://googleads.g.doubleclick.net https://api-v2.mutinyhq.io https://client-registry.mutinycdn.com
51
+ https://client.mutinycdn.com https://user-data.mutinycdn.com;connect-src 'self'
52
+ https://msgstore.www.notion.so wss://msgstore.www.notion.so ws://localhost:*
53
+ ws://127.0.0.1:* https://notion-emojis.s3-us-west-2.amazonaws.com https://s3-us-west-2.amazonaws.com
54
+ https://s3.us-west-2.amazonaws.com https://notion-production-snapshots-2.s3.us-west-2.amazonaws.com
55
+ https://cdn.amplitude.com https://api.amplitude.com https://hkfxbbdzib.notion.so
56
+ https://www.notion.so https://api.embed.ly https://js.intercomcdn.com https://api-iam.intercom.io
57
+ https://uploads.intercomcdn.com wss://nexus-websocket-a.intercom.io https://ekr.zdassets.com
58
+ https://ekr.zendesk.com\t https://makenotion.zendesk.com\t https://api.smooch.io\t
59
+ wss://api.smooch.io\t https://logs-01.loggly.com https://http-inputs-notion.splunkcloud.com
60
+ https://cdn.segment.com https://api.segment.io https://analytics.pgncs.notion.so
61
+ https://api.pgncs.notion.so https://o324374.ingest.sentry.io https://checkout.stripe.com
62
+ https://js.stripe.com https://cdn.contentful.com https://preview.contentful.com
63
+ https://images.ctfassets.net https://www2.profitwell.com https://tracking.chilipiper.com
64
+ https://api.chilipiper.com https://api.unsplash.com https://boards-api.greenhouse.io
65
+ https://accounts.google.com https://oauth2.googleapis.com https://www.googleadservices.com
66
+ https://googleads.g.doubleclick.net https://region1.google-analytics.com https://region1.analytics.google.com
67
+ https://www.google-analytics.com https://api-v2.mutinyhq.io https://client-registry.mutinycdn.com
68
+ https://client.mutinycdn.com https://user-data.mutinycdn.com https://api.statuspage.io
69
+ https://pgncd.notion.so https://api.statsig.com https://statsigapi.net https://exp.notion.so
70
+ https://file.notion.so;font-src 'self' data: https://cdnjs.cloudflare.com
71
+ https://js.intercomcdn.com;img-src 'self' data: blob: https: https://platform.twitter.com
72
+ https://syndication.twitter.com https://pbs.twimg.com https://ton.twimg.com
73
+ https://region1.google-analytics.com https://region1.analytics.google.com;style-src
74
+ 'self' 'unsafe-inline' https://cdnjs.cloudflare.com https://github.githubassets.com
75
+ https://js.chilipiper.com https://platform.twitter.com https://ton.twimg.com
76
+ https://accounts.google.com;frame-src https: http: https://accounts.google.com;media-src
77
+ https: http: https://file.notion.so"
78
+ X-Dns-Prefetch-Control:
79
+ - 'off'
80
+ X-Frame-Options:
81
+ - SAMEORIGIN
82
+ Strict-Transport-Security:
83
+ - max-age=5184000; includeSubDomains
84
+ X-Download-Options:
85
+ - noopen
86
+ X-Content-Type-Options:
87
+ - nosniff
88
+ X-Permitted-Cross-Domain-Policies:
89
+ - none
90
+ Referrer-Policy:
91
+ - strict-origin-when-cross-origin
92
+ X-Xss-Protection:
93
+ - '0'
94
+ Etag:
95
+ - W/"250-4FWWLrU/GwY9p/XT7GcTdthccMw"
96
+ Vary:
97
+ - Accept-Encoding
98
+ Cf-Cache-Status:
99
+ - DYNAMIC
100
+ Server:
101
+ - cloudflare
102
+ Cf-Ray:
103
+ - 74479fdd5a4e2940-ORD
104
+ body:
105
+ encoding: UTF-8
106
+ string: '{"object":"comment","id":"9e908609-bfcd-42d2-8f54-61c39d82351d","parent":{"type":"block_id","block_id":"1a2f70ab-2615-4dc7-a838-536a3f430af4"},"discussion_id":"ea116af4-839c-410b-b4ac-242a18dc4392","created_time":"2022-09-02T16:29:00.000Z","last_edited_time":"2022-09-02T16:29:00.000Z","created_by":{"object":"user","id":"3eb712e5-c1d7-43f2-ae18-c4d36f846aa1"},"rich_text":[{"type":"text","text":{"content":"test
107
+ comment","link":null},"annotations":{"bold":false,"italic":false,"strikethrough":false,"underline":false,"code":false,"color":"default"},"plain_text":"test
108
+ comment","href":null}]}'
109
+ recorded_at: Fri, 02 Sep 2022 16:29:26 GMT
110
+ recorded_with: VCR 6.0.0
@@ -0,0 +1,110 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://api.notion.com/v1/comments
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{"rich_text":[{"text":{"content":"test comment"}}],"parent":{"page_id":"3e4bc91d36c74de595113b31c6fdb82c"}}'
9
+ headers:
10
+ Accept:
11
+ - application/json; charset=utf-8
12
+ User-Agent:
13
+ - Notion Ruby Client/1.0.0
14
+ Authorization:
15
+ - Bearer <NOTION_API_TOKEN>
16
+ Notion-Version:
17
+ - '2022-02-22'
18
+ Content-Type:
19
+ - application/json
20
+ Accept-Encoding:
21
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
22
+ response:
23
+ status:
24
+ code: 200
25
+ message: OK
26
+ headers:
27
+ Date:
28
+ - Fri, 02 Sep 2022 16:26:31 GMT
29
+ Content-Type:
30
+ - application/json; charset=utf-8
31
+ Transfer-Encoding:
32
+ - chunked
33
+ Connection:
34
+ - keep-alive
35
+ Set-Cookie:
36
+ - notion_browser_id=fd495a20-5f77-4a87-a210-adb2144bd55b; Domain=www.notion.so;
37
+ Path=/; Expires=Sat, 02 Sep 2023 16:26:31 GMT; Secure
38
+ - notion_check_cookie_consent=false; Domain=www.notion.so; Path=/; Expires=Sat,
39
+ 03 Sep 2022 16:26:31 GMT; Secure
40
+ Content-Security-Policy:
41
+ - "script-src 'self' 'unsafe-inline' 'unsafe-eval' https://gist.github.com https://apis.google.com
42
+ https://www.google.com https://www.gstatic.com https://cdn.amplitude.com https://api.amplitude.com
43
+ https://hkfxbbdzib.notion.so https://widget.intercom.io https://js.intercomcdn.com
44
+ https://static.zdassets.com https://api.smooch.io\t https://logs-01.loggly.com
45
+ https://http-inputs-notion.splunkcloud.com https://cdn.segment.com https://analytics.pgncs.notion.so
46
+ https://o324374.ingest.sentry.io https://checkout.stripe.com https://js.stripe.com
47
+ https://embed.typeform.com https://admin.typeform.com https://public.profitwell.com
48
+ js.sentry-cdn.com https://js.chilipiper.com https://platform.twitter.com https://cdn.syndication.twimg.com
49
+ https://accounts.google.com www.googletagmanager.com https://www.googleadservices.com
50
+ https://googleads.g.doubleclick.net https://api-v2.mutinyhq.io https://client-registry.mutinycdn.com
51
+ https://client.mutinycdn.com https://user-data.mutinycdn.com;connect-src 'self'
52
+ https://msgstore.www.notion.so wss://msgstore.www.notion.so ws://localhost:*
53
+ ws://127.0.0.1:* https://notion-emojis.s3-us-west-2.amazonaws.com https://s3-us-west-2.amazonaws.com
54
+ https://s3.us-west-2.amazonaws.com https://notion-production-snapshots-2.s3.us-west-2.amazonaws.com
55
+ https://cdn.amplitude.com https://api.amplitude.com https://hkfxbbdzib.notion.so
56
+ https://www.notion.so https://api.embed.ly https://js.intercomcdn.com https://api-iam.intercom.io
57
+ https://uploads.intercomcdn.com wss://nexus-websocket-a.intercom.io https://ekr.zdassets.com
58
+ https://ekr.zendesk.com\t https://makenotion.zendesk.com\t https://api.smooch.io\t
59
+ wss://api.smooch.io\t https://logs-01.loggly.com https://http-inputs-notion.splunkcloud.com
60
+ https://cdn.segment.com https://api.segment.io https://analytics.pgncs.notion.so
61
+ https://api.pgncs.notion.so https://o324374.ingest.sentry.io https://checkout.stripe.com
62
+ https://js.stripe.com https://cdn.contentful.com https://preview.contentful.com
63
+ https://images.ctfassets.net https://www2.profitwell.com https://tracking.chilipiper.com
64
+ https://api.chilipiper.com https://api.unsplash.com https://boards-api.greenhouse.io
65
+ https://accounts.google.com https://oauth2.googleapis.com https://www.googleadservices.com
66
+ https://googleads.g.doubleclick.net https://region1.google-analytics.com https://region1.analytics.google.com
67
+ https://www.google-analytics.com https://api-v2.mutinyhq.io https://client-registry.mutinycdn.com
68
+ https://client.mutinycdn.com https://user-data.mutinycdn.com https://api.statuspage.io
69
+ https://pgncd.notion.so https://api.statsig.com https://statsigapi.net https://exp.notion.so
70
+ https://file.notion.so;font-src 'self' data: https://cdnjs.cloudflare.com
71
+ https://js.intercomcdn.com;img-src 'self' data: blob: https: https://platform.twitter.com
72
+ https://syndication.twitter.com https://pbs.twimg.com https://ton.twimg.com
73
+ https://region1.google-analytics.com https://region1.analytics.google.com;style-src
74
+ 'self' 'unsafe-inline' https://cdnjs.cloudflare.com https://github.githubassets.com
75
+ https://js.chilipiper.com https://platform.twitter.com https://ton.twimg.com
76
+ https://accounts.google.com;frame-src https: http: https://accounts.google.com;media-src
77
+ https: http: https://file.notion.so"
78
+ X-Dns-Prefetch-Control:
79
+ - 'off'
80
+ X-Frame-Options:
81
+ - SAMEORIGIN
82
+ Strict-Transport-Security:
83
+ - max-age=5184000; includeSubDomains
84
+ X-Download-Options:
85
+ - noopen
86
+ X-Content-Type-Options:
87
+ - nosniff
88
+ X-Permitted-Cross-Domain-Policies:
89
+ - none
90
+ Referrer-Policy:
91
+ - strict-origin-when-cross-origin
92
+ X-Xss-Protection:
93
+ - '0'
94
+ Etag:
95
+ - W/"24e-lwOvl3pLRgq3uaVwDU7YNYGeauA"
96
+ Vary:
97
+ - Accept-Encoding
98
+ Cf-Cache-Status:
99
+ - DYNAMIC
100
+ Server:
101
+ - cloudflare
102
+ Cf-Ray:
103
+ - 74479b9bdc202d94-ORD
104
+ body:
105
+ encoding: UTF-8
106
+ string: '{"object":"comment","id":"95ef4675-e3c0-428c-b937-ac8d6805ac04","parent":{"type":"page_id","page_id":"3e4bc91d-36c7-4de5-9511-3b31c6fdb82c"},"discussion_id":"4cbe01af-8163-4b03-957d-cac2691b9839","created_time":"2022-09-02T16:26:00.000Z","last_edited_time":"2022-09-02T16:26:00.000Z","created_by":{"object":"user","id":"3eb712e5-c1d7-43f2-ae18-c4d36f846aa1"},"rich_text":[{"type":"text","text":{"content":"test
107
+ comment","link":null},"annotations":{"bold":false,"italic":false,"strikethrough":false,"underline":false,"code":false,"color":"default"},"plain_text":"test
108
+ comment","href":null}]}'
109
+ recorded_at: Fri, 02 Sep 2022 16:26:31 GMT
110
+ recorded_with: VCR 6.0.0
@@ -0,0 +1,106 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api.notion.com/v1/comments?block_id=1a2f70ab26154dc7a838536a3f430af4
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - application/json; charset=utf-8
12
+ User-Agent:
13
+ - Notion Ruby Client/1.0.0
14
+ Authorization:
15
+ - Bearer <NOTION_API_TOKEN>
16
+ Notion-Version:
17
+ - '2022-02-22'
18
+ Accept-Encoding:
19
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
20
+ response:
21
+ status:
22
+ code: 200
23
+ message: OK
24
+ headers:
25
+ Date:
26
+ - Fri, 02 Sep 2022 16:21:51 GMT
27
+ Content-Type:
28
+ - application/json; charset=utf-8
29
+ Transfer-Encoding:
30
+ - chunked
31
+ Connection:
32
+ - keep-alive
33
+ Set-Cookie:
34
+ - notion_browser_id=86d25b85-2df9-4e71-abd7-1d3e0b02bc8a; Domain=www.notion.so;
35
+ Path=/; Expires=Sat, 02 Sep 2023 16:21:51 GMT; Secure
36
+ - notion_check_cookie_consent=false; Domain=www.notion.so; Path=/; Expires=Sat,
37
+ 03 Sep 2022 16:21:51 GMT; Secure
38
+ Content-Security-Policy:
39
+ - "script-src 'self' 'unsafe-inline' 'unsafe-eval' https://gist.github.com https://apis.google.com
40
+ https://www.google.com https://www.gstatic.com https://cdn.amplitude.com https://api.amplitude.com
41
+ https://hkfxbbdzib.notion.so https://widget.intercom.io https://js.intercomcdn.com
42
+ https://static.zdassets.com https://api.smooch.io\t https://logs-01.loggly.com
43
+ https://http-inputs-notion.splunkcloud.com https://cdn.segment.com https://analytics.pgncs.notion.so
44
+ https://o324374.ingest.sentry.io https://checkout.stripe.com https://js.stripe.com
45
+ https://embed.typeform.com https://admin.typeform.com https://public.profitwell.com
46
+ js.sentry-cdn.com https://js.chilipiper.com https://platform.twitter.com https://cdn.syndication.twimg.com
47
+ https://accounts.google.com www.googletagmanager.com https://www.googleadservices.com
48
+ https://googleads.g.doubleclick.net https://api-v2.mutinyhq.io https://client-registry.mutinycdn.com
49
+ https://client.mutinycdn.com https://user-data.mutinycdn.com;connect-src 'self'
50
+ https://msgstore.www.notion.so wss://msgstore.www.notion.so ws://localhost:*
51
+ ws://127.0.0.1:* https://notion-emojis.s3-us-west-2.amazonaws.com https://s3-us-west-2.amazonaws.com
52
+ https://s3.us-west-2.amazonaws.com https://notion-production-snapshots-2.s3.us-west-2.amazonaws.com
53
+ https://cdn.amplitude.com https://api.amplitude.com https://hkfxbbdzib.notion.so
54
+ https://www.notion.so https://api.embed.ly https://js.intercomcdn.com https://api-iam.intercom.io
55
+ https://uploads.intercomcdn.com wss://nexus-websocket-a.intercom.io https://ekr.zdassets.com
56
+ https://ekr.zendesk.com\t https://makenotion.zendesk.com\t https://api.smooch.io\t
57
+ wss://api.smooch.io\t https://logs-01.loggly.com https://http-inputs-notion.splunkcloud.com
58
+ https://cdn.segment.com https://api.segment.io https://analytics.pgncs.notion.so
59
+ https://api.pgncs.notion.so https://o324374.ingest.sentry.io https://checkout.stripe.com
60
+ https://js.stripe.com https://cdn.contentful.com https://preview.contentful.com
61
+ https://images.ctfassets.net https://www2.profitwell.com https://tracking.chilipiper.com
62
+ https://api.chilipiper.com https://api.unsplash.com https://boards-api.greenhouse.io
63
+ https://accounts.google.com https://oauth2.googleapis.com https://www.googleadservices.com
64
+ https://googleads.g.doubleclick.net https://region1.google-analytics.com https://region1.analytics.google.com
65
+ https://www.google-analytics.com https://api-v2.mutinyhq.io https://client-registry.mutinycdn.com
66
+ https://client.mutinycdn.com https://user-data.mutinycdn.com https://api.statuspage.io
67
+ https://pgncd.notion.so https://api.statsig.com https://statsigapi.net https://exp.notion.so
68
+ https://file.notion.so;font-src 'self' data: https://cdnjs.cloudflare.com
69
+ https://js.intercomcdn.com;img-src 'self' data: blob: https: https://platform.twitter.com
70
+ https://syndication.twitter.com https://pbs.twimg.com https://ton.twimg.com
71
+ https://region1.google-analytics.com https://region1.analytics.google.com;style-src
72
+ 'self' 'unsafe-inline' https://cdnjs.cloudflare.com https://github.githubassets.com
73
+ https://js.chilipiper.com https://platform.twitter.com https://ton.twimg.com
74
+ https://accounts.google.com;frame-src https: http: https://accounts.google.com;media-src
75
+ https: http: https://file.notion.so"
76
+ X-Dns-Prefetch-Control:
77
+ - 'off'
78
+ X-Frame-Options:
79
+ - SAMEORIGIN
80
+ Strict-Transport-Security:
81
+ - max-age=5184000; includeSubDomains
82
+ X-Download-Options:
83
+ - noopen
84
+ X-Content-Type-Options:
85
+ - nosniff
86
+ X-Permitted-Cross-Domain-Policies:
87
+ - none
88
+ Referrer-Policy:
89
+ - strict-origin-when-cross-origin
90
+ X-Xss-Protection:
91
+ - '0'
92
+ Etag:
93
+ - W/"2a4-a2pWQq0rrllNzewHfiDfmBJ/vB8"
94
+ Vary:
95
+ - Accept-Encoding
96
+ Cf-Cache-Status:
97
+ - DYNAMIC
98
+ Server:
99
+ - cloudflare
100
+ Cf-Ray:
101
+ - 744794c32dac2c80-ORD
102
+ body:
103
+ encoding: UTF-8
104
+ string: '{"object":"list","results":[{"object":"comment","id":"8539f829-54f8-4389-a4a3-a6bc3d40636a","parent":{"type":"block_id","block_id":"1a2f70ab-2615-4dc7-a838-536a3f430af4"},"discussion_id":"ea116af4-839c-410b-b4ac-242a18dc4392","created_time":"2022-09-02T16:19:00.000Z","last_edited_time":"2022-09-02T16:19:00.000Z","created_by":{"object":"user","id":"240574f5-3adc-498c-a504-7733b0ea337b"},"rich_text":[{"type":"text","text":{"content":"hello!","link":null},"annotations":{"bold":false,"italic":false,"strikethrough":false,"underline":false,"code":false,"color":"default"},"plain_text":"hello!","href":null}]}],"next_cursor":null,"has_more":false,"type":"comment","comment":{}}'
105
+ recorded_at: Fri, 02 Sep 2022 16:21:51 GMT
106
+ recorded_with: VCR 6.0.0
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+ require 'spec_helper'
3
+
4
+ RSpec.describe Notion::Api::Endpoints::Comments do
5
+ let(:client) { Notion::Client.new }
6
+ let(:discussion_comment) do
7
+ {
8
+ discussion_id: 'ea116af4839c410bb4ac242a18dc4392',
9
+ rich_text: [
10
+ {
11
+ text: {
12
+ content: 'test comment'
13
+ }
14
+ }
15
+ ]
16
+ }
17
+ end
18
+ let(:page_comment) do
19
+ {
20
+ parent: { page_id: '3e4bc91d36c74de595113b31c6fdb82c' },
21
+ rich_text: [
22
+ {
23
+ text: {
24
+ content: 'test comment'
25
+ }
26
+ }
27
+ ]
28
+ }
29
+ end
30
+
31
+ describe '#retrieve_comments' do
32
+ it 'retrieves comments', vcr: { cassette_name: 'retrieve_comments' } do
33
+ response = client.retrieve_comments(block_id: '1a2f70ab26154dc7a838536a3f430af4')
34
+ expect(response.results.size).to eq 1
35
+ end
36
+ end
37
+
38
+ describe '#create_comment' do
39
+ it 'creates a comment on a page', vcr: { cassette_name: 'create_page_comment' } do
40
+ response = client.create_comment(page_comment)
41
+ expect(response.created_time).not_to be_empty
42
+ end
43
+
44
+ it 'creates a comment on a discussion', vcr: { cassette_name: 'create_discussion_comment' } do
45
+ response = client.create_comment(discussion_comment)
46
+ expect(response.created_time).not_to be_empty
47
+ end
48
+ end
49
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: notion-ruby-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nicolas Goutay
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-02-23 00:00:00.000000000 Z
11
+ date: 2023-02-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dotenv
@@ -220,6 +220,7 @@ files:
220
220
  - lib/notion.rb
221
221
  - lib/notion/api/endpoints.rb
222
222
  - lib/notion/api/endpoints/blocks.rb
223
+ - lib/notion/api/endpoints/comments.rb
223
224
  - lib/notion/api/endpoints/databases.rb
224
225
  - lib/notion/api/endpoints/pages.rb
225
226
  - lib/notion/api/endpoints/search.rb
@@ -245,7 +246,9 @@ files:
245
246
  - spec/fixtures/notion/block_append_children.yml
246
247
  - spec/fixtures/notion/block_children.yml
247
248
  - spec/fixtures/notion/create_database.yml
249
+ - spec/fixtures/notion/create_discussion_comment.yml
248
250
  - spec/fixtures/notion/create_page.yml
251
+ - spec/fixtures/notion/create_page_comment.yml
249
252
  - spec/fixtures/notion/database.yml
250
253
  - spec/fixtures/notion/database_query.yml
251
254
  - spec/fixtures/notion/delete_block.yml
@@ -256,6 +259,7 @@ files:
256
259
  - spec/fixtures/notion/paginated_databases_list.yml
257
260
  - spec/fixtures/notion/paginated_search.yml
258
261
  - spec/fixtures/notion/paginated_users_list.yml
262
+ - spec/fixtures/notion/retrieve_comments.yml
259
263
  - spec/fixtures/notion/search.yml
260
264
  - spec/fixtures/notion/search_with_query.yml
261
265
  - spec/fixtures/notion/update_block.yml
@@ -265,6 +269,7 @@ files:
265
269
  - spec/fixtures/notion/users_list.yml
266
270
  - spec/fixtures/notion/users_me.yml
267
271
  - spec/notion/api/endpoints/blocks_spec.rb
272
+ - spec/notion/api/endpoints/comments_spec.rb
268
273
  - spec/notion/api/endpoints/databases_spec.rb
269
274
  - spec/notion/api/endpoints/pages_spec.rb
270
275
  - spec/notion/api/endpoints/search_spec.rb
@@ -303,7 +308,9 @@ test_files:
303
308
  - spec/fixtures/notion/block_append_children.yml
304
309
  - spec/fixtures/notion/block_children.yml
305
310
  - spec/fixtures/notion/create_database.yml
311
+ - spec/fixtures/notion/create_discussion_comment.yml
306
312
  - spec/fixtures/notion/create_page.yml
313
+ - spec/fixtures/notion/create_page_comment.yml
307
314
  - spec/fixtures/notion/database.yml
308
315
  - spec/fixtures/notion/database_query.yml
309
316
  - spec/fixtures/notion/delete_block.yml
@@ -314,6 +321,7 @@ test_files:
314
321
  - spec/fixtures/notion/paginated_databases_list.yml
315
322
  - spec/fixtures/notion/paginated_search.yml
316
323
  - spec/fixtures/notion/paginated_users_list.yml
324
+ - spec/fixtures/notion/retrieve_comments.yml
317
325
  - spec/fixtures/notion/search.yml
318
326
  - spec/fixtures/notion/search_with_query.yml
319
327
  - spec/fixtures/notion/update_block.yml
@@ -323,6 +331,7 @@ test_files:
323
331
  - spec/fixtures/notion/users_list.yml
324
332
  - spec/fixtures/notion/users_me.yml
325
333
  - spec/notion/api/endpoints/blocks_spec.rb
334
+ - spec/notion/api/endpoints/comments_spec.rb
326
335
  - spec/notion/api/endpoints/databases_spec.rb
327
336
  - spec/notion/api/endpoints/pages_spec.rb
328
337
  - spec/notion/api/endpoints/search_spec.rb