notion-ruby-client 0.0.8 → 1.0.0.pre.beta2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/.devcontainer/Dockerfile +5 -0
  3. data/.devcontainer/boot.sh +1 -0
  4. data/.devcontainer/devcontainer.json +30 -0
  5. data/.github/workflows/ci.yml +1 -0
  6. data/.gitignore +7 -0
  7. data/.rubocop.yml +9 -0
  8. data/CHANGELOG.md +43 -0
  9. data/CONTRIBUTING.md +51 -0
  10. data/Gemfile.lock +38 -11
  11. data/README.md +354 -108
  12. data/bin/console +31 -0
  13. data/lib/notion/api/endpoints/blocks.rb +51 -7
  14. data/lib/notion/api/endpoints/databases.rb +60 -53
  15. data/lib/notion/api/endpoints/pages.rb +24 -7
  16. data/lib/notion/api/endpoints/search.rb +41 -0
  17. data/lib/notion/api/endpoints/users.rb +14 -3
  18. data/lib/notion/api/endpoints.rb +3 -1
  19. data/lib/notion/api/errors/too_many_requests.rb +15 -0
  20. data/lib/notion/api/errors.rb +0 -2
  21. data/lib/notion/config.rb +2 -0
  22. data/lib/notion/pagination/cursor.rb +5 -2
  23. data/lib/notion/version.rb +2 -2
  24. data/lib/notion-ruby-client.rb +2 -0
  25. data/notion-ruby-client.gemspec +5 -3
  26. data/spec/fixtures/notion/block.yml +146 -0
  27. data/spec/fixtures/notion/block_append_children.yml +76 -62
  28. data/spec/fixtures/notion/block_children.yml +80 -65
  29. data/spec/fixtures/notion/create_database.yml +67 -58
  30. data/spec/fixtures/notion/create_page.yml +68 -59
  31. data/spec/fixtures/notion/database.yml +78 -61
  32. data/spec/fixtures/notion/database_query.yml +81 -62
  33. data/spec/fixtures/notion/delete_block.yml +145 -0
  34. data/spec/fixtures/notion/page.yml +70 -57
  35. data/spec/fixtures/notion/page_property_item.yml +143 -0
  36. data/spec/fixtures/notion/paginated_block_children.yml +296 -242
  37. data/spec/fixtures/notion/paginated_database_query.yml +79 -62
  38. data/spec/fixtures/notion/paginated_databases_list.yml +78 -61
  39. data/spec/fixtures/notion/paginated_search.yml +301 -0
  40. data/spec/fixtures/notion/paginated_users_list.yml +143 -130
  41. data/spec/fixtures/notion/search.yml +160 -0
  42. data/spec/fixtures/notion/search_with_query.yml +152 -0
  43. data/spec/fixtures/notion/update_block.yml +148 -0
  44. data/spec/fixtures/notion/update_database.yml +152 -0
  45. data/spec/fixtures/notion/update_page.yml +71 -59
  46. data/spec/fixtures/notion/users.yml +69 -56
  47. data/spec/fixtures/notion/users_list.yml +143 -130
  48. data/spec/fixtures/notion/users_me.yml +144 -0
  49. data/spec/notion/api/endpoints/blocks_spec.rb +44 -12
  50. data/spec/notion/api/endpoints/databases_spec.rb +22 -27
  51. data/spec/notion/api/endpoints/pages_spec.rb +13 -16
  52. data/spec/notion/api/endpoints/search_spec.rb +26 -0
  53. data/spec/notion/api/endpoints/users_spec.rb +9 -4
  54. data/spec/notion/pagination/cursor_spec.rb +126 -0
  55. metadata +67 -15
  56. data/.rspec_status +0 -19
  57. data/notion-ruby-client-0.0.4.gem +0 -0
  58. data/scratchpad.rb +0 -22
  59. data/screenshots/create_notion_bot.png +0 -0
  60. data/spec/fixtures/notion/databases_list.yml +0 -133
@@ -1,133 +1,146 @@
1
1
  ---
2
2
  http_interactions:
3
- - request:
4
- method: get
5
- uri: https://api.notion.com/v1/users
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/0.0.4
14
- Authorization:
15
- - Bearer <NOTION_API_TOKEN>
16
- Accept-Encoding:
17
- - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
18
- response:
19
- status:
20
- code: 200
21
- message: OK
22
- headers:
23
- Date:
24
- - Sun, 25 Apr 2021 21:00:06 GMT
25
- Content-Type:
26
- - application/json; charset=utf-8
27
- Transfer-Encoding:
28
- - chunked
29
- Connection:
30
- - keep-alive
31
- Set-Cookie:
32
- - __cfduid=d8bd1f2559197f7cbe522dc8d2a13cf771619384405; expires=Tue, 25-May-21
33
- 21:00:05 GMT; path=/; domain=.notion.com; HttpOnly; SameSite=Lax
34
- - notion_browser_id=a30325ff-c789-4096-a739-ba51b79eea5b; Domain=www.notion.so;
35
- Path=/; Expires=Wed, 01 Jan 2053 22:46:46 GMT; Secure
36
- X-Dns-Prefetch-Control:
37
- - 'off'
38
- X-Frame-Options:
39
- - SAMEORIGIN
40
- Strict-Transport-Security:
41
- - max-age=5184000; includeSubDomains
42
- X-Download-Options:
43
- - noopen
44
- X-Content-Type-Options:
45
- - nosniff
46
- X-Xss-Protection:
47
- - 1; mode=block
48
- Referrer-Policy:
49
- - same-origin
50
- Content-Security-Policy:
51
- - 'script-src ''self'' ''unsafe-inline'' ''unsafe-eval'' https://gist.github.com
52
- https://apis.google.com https://api.amplitude.com https://widget.intercom.io
53
- https://js.intercomcdn.com https://logs-01.loggly.com https://cdn.segment.com
54
- https://analytics.pgncs.notion.so https://checkout.stripe.com https://js.stripe.com/v3
55
- https://embed.typeform.com https://admin.typeform.com https://platform.twitter.com
56
- https://cdn.syndication.twimg.com https://www.googletagmanager.com https://x.clearbitjs.com;
57
- connect-src ''self'' https://msgstore.www.notion.so wss://msgstore.www.notion.so
58
- ws://localhost:* https://notion-emojis.s3-us-west-2.amazonaws.com https://s3-us-west-2.amazonaws.com
59
- https://s3.us-west-2.amazonaws.com https://notion-production-snapshots-2.s3.us-west-2.amazonaws.com
60
- https: http: https://api.amplitude.com https://api.embed.ly https://js.intercomcdn.com
61
- https://api-iam.intercom.io wss://nexus-websocket-a.intercom.io https://logs-01.loggly.com
62
- https://api.segment.io https://api.pgncs.notion.so https://checkout.stripe.com
63
- https://js.stripe.com/v3 https://cdn.contentful.com https://preview.contentful.com
64
- https://images.ctfassets.net https://api.unsplash.com https://boards-api.greenhouse.io;
65
- font-src ''self'' data: https://cdnjs.cloudflare.com https://js.intercomcdn.com;
66
- img-src ''self'' data: blob: https: https://platform.twitter.com https://syndication.twitter.com
67
- https://pbs.twimg.com https://ton.twimg.com www.googletagmanager.com; style-src
68
- ''self'' ''unsafe-inline'' https://cdnjs.cloudflare.com https://github.githubassets.com
69
- https://platform.twitter.com https://ton.twimg.com; frame-src https: http:;
70
- media-src https: http:'
71
- X-Content-Security-Policy:
72
- - 'script-src ''self'' ''unsafe-inline'' ''unsafe-eval'' https://gist.github.com
73
- https://apis.google.com https://api.amplitude.com https://widget.intercom.io
74
- https://js.intercomcdn.com https://logs-01.loggly.com https://cdn.segment.com
75
- https://analytics.pgncs.notion.so https://checkout.stripe.com https://js.stripe.com/v3
76
- https://embed.typeform.com https://admin.typeform.com https://platform.twitter.com
77
- https://cdn.syndication.twimg.com https://www.googletagmanager.com https://x.clearbitjs.com;
78
- connect-src ''self'' https://msgstore.www.notion.so wss://msgstore.www.notion.so
79
- ws://localhost:* https://notion-emojis.s3-us-west-2.amazonaws.com https://s3-us-west-2.amazonaws.com
80
- https://s3.us-west-2.amazonaws.com https://notion-production-snapshots-2.s3.us-west-2.amazonaws.com
81
- https: http: https://api.amplitude.com https://api.embed.ly https://js.intercomcdn.com
82
- https://api-iam.intercom.io wss://nexus-websocket-a.intercom.io https://logs-01.loggly.com
83
- https://api.segment.io https://api.pgncs.notion.so https://checkout.stripe.com
84
- https://js.stripe.com/v3 https://cdn.contentful.com https://preview.contentful.com
85
- https://images.ctfassets.net https://api.unsplash.com https://boards-api.greenhouse.io;
86
- font-src ''self'' data: https://cdnjs.cloudflare.com https://js.intercomcdn.com;
87
- img-src ''self'' data: blob: https: https://platform.twitter.com https://syndication.twitter.com
88
- https://pbs.twimg.com https://ton.twimg.com www.googletagmanager.com; style-src
89
- ''self'' ''unsafe-inline'' https://cdnjs.cloudflare.com https://github.githubassets.com
90
- https://platform.twitter.com https://ton.twimg.com; frame-src https: http:;
91
- media-src https: http:'
92
- X-Webkit-Csp:
93
- - 'script-src ''self'' ''unsafe-inline'' ''unsafe-eval'' https://gist.github.com
94
- https://apis.google.com https://api.amplitude.com https://widget.intercom.io
95
- https://js.intercomcdn.com https://logs-01.loggly.com https://cdn.segment.com
96
- https://analytics.pgncs.notion.so https://checkout.stripe.com https://js.stripe.com/v3
97
- https://embed.typeform.com https://admin.typeform.com https://platform.twitter.com
98
- https://cdn.syndication.twimg.com https://www.googletagmanager.com https://x.clearbitjs.com;
99
- connect-src ''self'' https://msgstore.www.notion.so wss://msgstore.www.notion.so
100
- ws://localhost:* https://notion-emojis.s3-us-west-2.amazonaws.com https://s3-us-west-2.amazonaws.com
101
- https://s3.us-west-2.amazonaws.com https://notion-production-snapshots-2.s3.us-west-2.amazonaws.com
102
- https: http: https://api.amplitude.com https://api.embed.ly https://js.intercomcdn.com
103
- https://api-iam.intercom.io wss://nexus-websocket-a.intercom.io https://logs-01.loggly.com
104
- https://api.segment.io https://api.pgncs.notion.so https://checkout.stripe.com
105
- https://js.stripe.com/v3 https://cdn.contentful.com https://preview.contentful.com
106
- https://images.ctfassets.net https://api.unsplash.com https://boards-api.greenhouse.io;
107
- font-src ''self'' data: https://cdnjs.cloudflare.com https://js.intercomcdn.com;
108
- img-src ''self'' data: blob: https: https://platform.twitter.com https://syndication.twitter.com
109
- https://pbs.twimg.com https://ton.twimg.com www.googletagmanager.com; style-src
110
- ''self'' ''unsafe-inline'' https://cdnjs.cloudflare.com https://github.githubassets.com
111
- https://platform.twitter.com https://ton.twimg.com; frame-src https: http:;
112
- media-src https: http:'
113
- Etag:
114
- - W/"2c7-9fGZ6Loa3izncqaW0AxZr7NvCPY"
115
- Vary:
116
- - Accept-Encoding
117
- Cf-Cache-Status:
118
- - DYNAMIC
119
- Cf-Request-Id:
120
- - '09ac6e27c800000853aea0c000000001'
121
- Expect-Ct:
122
- - max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
123
- Server:
124
- - cloudflare
125
- Cf-Ray:
126
- - 645a7fb93dac0853-CDG
127
- body:
128
- encoding: UTF-8
129
- string: '{"object":"list","results":[{"object":"user","id":"7ee614aa-0542-421d-b8aa-b14adf120642","name":"Arthur
130
- Levoyer","avatar_url":"https://lh6.googleusercontent.com/-Y62UK1QjtV8/AAAAAAAAAAI/AAAAAAAAACk/3PgWyczXM8o/photo.jpg?sz=50","type":"person","person":{"email":"arthurl@bam.tech"}},{"object":"user","id":"a8da8d30-c858-4c3d-87ad-3f2d477bd98d","name":"Nicolas
131
- Goutay","avatar_url":"https://s3-us-west-2.amazonaws.com/public.notion-static.com/5f9b5c65-a7ed-4fc5-983a-6c999b7c2208/Copy_of_P1222454.jpg","type":"person","person":{"email":"nicolas@orbit.love"}},{"object":"user","id":"f2e67536-c037-4dd5-97f5-8ed9d23a4dbd","name":"LeBot","avatar_url":null,"type":"bot","bot":{}}],"next_cursor":null,"has_more":false}'
132
- recorded_at: Sun, 25 Apr 2021 21:00:06 GMT
3
+ - request:
4
+ method: get
5
+ uri: https://api.notion.com/v1/users
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/0.0.8
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
+ - Sun, 29 Aug 2021 17:54:19 GMT
27
+ Content-Type:
28
+ - application/json; charset=utf-8
29
+ Transfer-Encoding:
30
+ - chunked
31
+ Connection:
32
+ - keep-alive
33
+ X-Dns-Prefetch-Control:
34
+ - "off"
35
+ X-Frame-Options:
36
+ - SAMEORIGIN
37
+ Strict-Transport-Security:
38
+ - max-age=5184000; includeSubDomains
39
+ X-Download-Options:
40
+ - noopen
41
+ X-Content-Type-Options:
42
+ - nosniff
43
+ X-Xss-Protection:
44
+ - 1; mode=block
45
+ Referrer-Policy:
46
+ - same-origin
47
+ Content-Security-Policy:
48
+ - "script-src 'self' 'unsafe-inline' 'unsafe-eval' https://gist.github.com
49
+ https://apis.google.com https://api.amplitude.com https://widget.intercom.io
50
+ https://js.intercomcdn.com https://logs-01.loggly.com https://cdn.segment.com
51
+ https://analytics.pgncs.notion.so https://o324374.ingest.sentry.io https://checkout.stripe.com
52
+ https://js.stripe.com https://embed.typeform.com https://admin.typeform.com
53
+ https://public.profitwell.com js.sentry-cdn.com https://js.chilipiper.com
54
+ https://platform.twitter.com https://cdn.syndication.twimg.com https://www.googletagmanager.com
55
+ https://x.clearbitjs.com https://client-registry.mutinycdn.com https://client.mutinycdn.com/
56
+ https://user-data.mutinycdn.com; connect-src 'self' https://msgstore.www.notion.so
57
+ wss://msgstore.www.notion.so ws://localhost:* https://notion-emojis.s3-us-west-2.amazonaws.com
58
+ https://s3-us-west-2.amazonaws.com https://s3.us-west-2.amazonaws.com https://notion-production-snapshots-2.s3.us-west-2.amazonaws.com
59
+ https: http: https://api.amplitude.com https://api.embed.ly https://js.intercomcdn.com
60
+ https://api-iam.intercom.io wss://nexus-websocket-a.intercom.io https://logs-01.loggly.com
61
+ https://cdn.segment.com https://api.segment.io https://analytics.pgncs.notion.so
62
+ https://api.pgncs.notion.so https://o324374.ingest.sentry.io https://checkout.stripe.com
63
+ https://js.stripe.com https://cdn.contentful.com https://preview.contentful.com
64
+ https://images.ctfassets.net https://www2.profitwell.com https://tracking.chilipiper.com
65
+ https://api.chilipiper.com https://api.unsplash.com https://boards-api.greenhouse.io
66
+ https://user-data.mutinycdn.com https://api-v2.mutinyhq.io https://api.statuspage.io
67
+ https://pgncd.notion.so; font-src 'self' data: https://cdnjs.cloudflare.com
68
+ https://js.intercomcdn.com; img-src 'self' data: blob: https: https://platform.twitter.com
69
+ https://syndication.twitter.com https://pbs.twimg.com https://ton.twimg.com
70
+ www.googletagmanager.com; style-src 'self' 'unsafe-inline' https://cdnjs.cloudflare.com
71
+ https://github.githubassets.com https://js.chilipiper.com https://platform.twitter.com
72
+ https://ton.twimg.com; frame-src https: http:; media-src https: http:"
73
+ X-Content-Security-Policy:
74
+ - "script-src 'self' 'unsafe-inline' 'unsafe-eval' https://gist.github.com
75
+ https://apis.google.com https://api.amplitude.com https://widget.intercom.io
76
+ https://js.intercomcdn.com https://logs-01.loggly.com https://cdn.segment.com
77
+ https://analytics.pgncs.notion.so https://o324374.ingest.sentry.io https://checkout.stripe.com
78
+ https://js.stripe.com https://embed.typeform.com https://admin.typeform.com
79
+ https://public.profitwell.com js.sentry-cdn.com https://js.chilipiper.com
80
+ https://platform.twitter.com https://cdn.syndication.twimg.com https://www.googletagmanager.com
81
+ https://x.clearbitjs.com https://client-registry.mutinycdn.com https://client.mutinycdn.com/
82
+ https://user-data.mutinycdn.com; connect-src 'self' https://msgstore.www.notion.so
83
+ wss://msgstore.www.notion.so ws://localhost:* https://notion-emojis.s3-us-west-2.amazonaws.com
84
+ https://s3-us-west-2.amazonaws.com https://s3.us-west-2.amazonaws.com https://notion-production-snapshots-2.s3.us-west-2.amazonaws.com
85
+ https: http: https://api.amplitude.com https://api.embed.ly https://js.intercomcdn.com
86
+ https://api-iam.intercom.io wss://nexus-websocket-a.intercom.io https://logs-01.loggly.com
87
+ https://cdn.segment.com https://api.segment.io https://analytics.pgncs.notion.so
88
+ https://api.pgncs.notion.so https://o324374.ingest.sentry.io https://checkout.stripe.com
89
+ https://js.stripe.com https://cdn.contentful.com https://preview.contentful.com
90
+ https://images.ctfassets.net https://www2.profitwell.com https://tracking.chilipiper.com
91
+ https://api.chilipiper.com https://api.unsplash.com https://boards-api.greenhouse.io
92
+ https://user-data.mutinycdn.com https://api-v2.mutinyhq.io https://api.statuspage.io
93
+ https://pgncd.notion.so; font-src 'self' data: https://cdnjs.cloudflare.com
94
+ https://js.intercomcdn.com; img-src 'self' data: blob: https: https://platform.twitter.com
95
+ https://syndication.twitter.com https://pbs.twimg.com https://ton.twimg.com
96
+ www.googletagmanager.com; style-src 'self' 'unsafe-inline' https://cdnjs.cloudflare.com
97
+ https://github.githubassets.com https://js.chilipiper.com https://platform.twitter.com
98
+ https://ton.twimg.com; frame-src https: http:; media-src https: http:"
99
+ X-Webkit-Csp:
100
+ - "script-src 'self' 'unsafe-inline' 'unsafe-eval' https://gist.github.com
101
+ https://apis.google.com https://api.amplitude.com https://widget.intercom.io
102
+ https://js.intercomcdn.com https://logs-01.loggly.com https://cdn.segment.com
103
+ https://analytics.pgncs.notion.so https://o324374.ingest.sentry.io https://checkout.stripe.com
104
+ https://js.stripe.com https://embed.typeform.com https://admin.typeform.com
105
+ https://public.profitwell.com js.sentry-cdn.com https://js.chilipiper.com
106
+ https://platform.twitter.com https://cdn.syndication.twimg.com https://www.googletagmanager.com
107
+ https://x.clearbitjs.com https://client-registry.mutinycdn.com https://client.mutinycdn.com/
108
+ https://user-data.mutinycdn.com; connect-src 'self' https://msgstore.www.notion.so
109
+ wss://msgstore.www.notion.so ws://localhost:* https://notion-emojis.s3-us-west-2.amazonaws.com
110
+ https://s3-us-west-2.amazonaws.com https://s3.us-west-2.amazonaws.com https://notion-production-snapshots-2.s3.us-west-2.amazonaws.com
111
+ https: http: https://api.amplitude.com https://api.embed.ly https://js.intercomcdn.com
112
+ https://api-iam.intercom.io wss://nexus-websocket-a.intercom.io https://logs-01.loggly.com
113
+ https://cdn.segment.com https://api.segment.io https://analytics.pgncs.notion.so
114
+ https://api.pgncs.notion.so https://o324374.ingest.sentry.io https://checkout.stripe.com
115
+ https://js.stripe.com https://cdn.contentful.com https://preview.contentful.com
116
+ https://images.ctfassets.net https://www2.profitwell.com https://tracking.chilipiper.com
117
+ https://api.chilipiper.com https://api.unsplash.com https://boards-api.greenhouse.io
118
+ https://user-data.mutinycdn.com https://api-v2.mutinyhq.io https://api.statuspage.io
119
+ https://pgncd.notion.so; font-src 'self' data: https://cdnjs.cloudflare.com
120
+ https://js.intercomcdn.com; img-src 'self' data: blob: https: https://platform.twitter.com
121
+ https://syndication.twitter.com https://pbs.twimg.com https://ton.twimg.com
122
+ www.googletagmanager.com; style-src 'self' 'unsafe-inline' https://cdnjs.cloudflare.com
123
+ https://github.githubassets.com https://js.chilipiper.com https://platform.twitter.com
124
+ https://ton.twimg.com; frame-src https: http:; media-src https: http:"
125
+ Set-Cookie:
126
+ - notion_browser_id=785222cc-f76b-43b8-bc0c-dfb20063afb4; Domain=www.notion.so;
127
+ Path=/; Expires=Wed, 07 May 2053 19:40:59 GMT; Secure
128
+ Etag:
129
+ - W/"1adb-S6ZkF0qf8ZYoFRnEMre0eWAonCA"
130
+ Vary:
131
+ - Accept-Encoding
132
+ Cf-Cache-Status:
133
+ - DYNAMIC
134
+ Expect-Ct:
135
+ - max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
136
+ Server:
137
+ - cloudflare
138
+ Cf-Ray:
139
+ - 6867a4d52ed94055-CDG
140
+ body:
141
+ encoding: UTF-8
142
+ string:
143
+ '{"object":"list","results":[{"object":"user","id":"a8da8d30-c858-4c3d-87ad-3f2d477bd98d","name":"Nicolas
144
+ Goutay","avatar_url":"https://s3-us-west-2.amazonaws.com/public.notion-static.com/5f9b5c65-a7ed-4fc5-983a-6c999b7c2208/Copy_of_P1222454.jpg","type":"person","person":{"email":"nicolas@orbit.love"}}],"next_cursor":null,"has_more":false}'
145
+ recorded_at: Sun, 29 Aug 2021 17:54:19 GMT
133
146
  recorded_with: VCR 6.0.0
@@ -0,0 +1,144 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api.notion.com/v1/users/me
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/0.1.0-beta1
14
+ Authorization:
15
+ - Bearer <NOTION_API_TOKEN>
16
+ Notion-Version:
17
+ - '2021-08-16'
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
+ - Sun, 20 Mar 2022 16:51:32 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=9756e0c2-e73b-43bd-8775-5e1f6541cbd1; Domain=www.notion.so;
35
+ Path=/; Expires=Mon, 20 Mar 2023 16:51:32 GMT; Secure
36
+ - notion_check_cookie_consent=true; Domain=www.notion.so; Path=/; Expires=Mon,
37
+ 21 Mar 2022 16:51:32 GMT; Secure
38
+ X-Dns-Prefetch-Control:
39
+ - 'off'
40
+ X-Frame-Options:
41
+ - SAMEORIGIN
42
+ Strict-Transport-Security:
43
+ - max-age=5184000; includeSubDomains
44
+ X-Download-Options:
45
+ - noopen
46
+ X-Content-Type-Options:
47
+ - nosniff
48
+ X-Xss-Protection:
49
+ - 1; mode=block
50
+ Referrer-Policy:
51
+ - same-origin
52
+ Content-Security-Policy:
53
+ - 'script-src ''self'' ''unsafe-inline'' ''unsafe-eval'' https://gist.github.com
54
+ https://apis.google.com https://cdn.amplitude.com https://api.amplitude.com
55
+ https://hkfxbbdzib.notion.so https://widget.intercom.io https://js.intercomcdn.com
56
+ https://logs-01.loggly.com https://cdn.segment.com https://analytics.pgncs.notion.so
57
+ https://o324374.ingest.sentry.io https://checkout.stripe.com https://js.stripe.com
58
+ https://embed.typeform.com https://admin.typeform.com https://public.profitwell.com
59
+ js.sentry-cdn.com https://js.chilipiper.com https://platform.twitter.com https://cdn.syndication.twimg.com;
60
+ connect-src ''self'' https://msgstore.www.notion.so wss://msgstore.www.notion.so
61
+ ws://localhost:* ws://127.0.0.1:* https://notion-emojis.s3-us-west-2.amazonaws.com
62
+ https://s3-us-west-2.amazonaws.com https://s3.us-west-2.amazonaws.com https://notion-production-snapshots-2.s3.us-west-2.amazonaws.com
63
+ https: http: https://cdn.amplitude.com https://api.amplitude.com https://hkfxbbdzib.notion.so
64
+ https://www.notion.so https://api.embed.ly https://js.intercomcdn.com https://api-iam.intercom.io
65
+ wss://nexus-websocket-a.intercom.io https://logs-01.loggly.com https://cdn.segment.com
66
+ https://api.segment.io https://analytics.pgncs.notion.so https://api.pgncs.notion.so
67
+ https://o324374.ingest.sentry.io https://checkout.stripe.com https://js.stripe.com
68
+ https://cdn.contentful.com https://preview.contentful.com https://images.ctfassets.net
69
+ https://www2.profitwell.com https://tracking.chilipiper.com https://api.chilipiper.com
70
+ https://api.unsplash.com https://boards-api.greenhouse.io https://api.statuspage.io
71
+ https://pgncd.notion.so https://api.statsig.com; font-src ''self'' data: https://cdnjs.cloudflare.com
72
+ https://js.intercomcdn.com; img-src ''self'' data: blob: https: https://platform.twitter.com
73
+ https://syndication.twitter.com https://pbs.twimg.com https://ton.twimg.com;
74
+ style-src ''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
+ frame-src https: http:; media-src https: http:'
77
+ X-Content-Security-Policy:
78
+ - 'script-src ''self'' ''unsafe-inline'' ''unsafe-eval'' https://gist.github.com
79
+ https://apis.google.com https://cdn.amplitude.com https://api.amplitude.com
80
+ https://hkfxbbdzib.notion.so https://widget.intercom.io https://js.intercomcdn.com
81
+ https://logs-01.loggly.com https://cdn.segment.com https://analytics.pgncs.notion.so
82
+ https://o324374.ingest.sentry.io https://checkout.stripe.com https://js.stripe.com
83
+ https://embed.typeform.com https://admin.typeform.com https://public.profitwell.com
84
+ js.sentry-cdn.com https://js.chilipiper.com https://platform.twitter.com https://cdn.syndication.twimg.com;
85
+ connect-src ''self'' https://msgstore.www.notion.so wss://msgstore.www.notion.so
86
+ ws://localhost:* ws://127.0.0.1:* https://notion-emojis.s3-us-west-2.amazonaws.com
87
+ https://s3-us-west-2.amazonaws.com https://s3.us-west-2.amazonaws.com https://notion-production-snapshots-2.s3.us-west-2.amazonaws.com
88
+ https: http: https://cdn.amplitude.com https://api.amplitude.com https://hkfxbbdzib.notion.so
89
+ https://www.notion.so https://api.embed.ly https://js.intercomcdn.com https://api-iam.intercom.io
90
+ wss://nexus-websocket-a.intercom.io https://logs-01.loggly.com https://cdn.segment.com
91
+ https://api.segment.io https://analytics.pgncs.notion.so https://api.pgncs.notion.so
92
+ https://o324374.ingest.sentry.io https://checkout.stripe.com https://js.stripe.com
93
+ https://cdn.contentful.com https://preview.contentful.com https://images.ctfassets.net
94
+ https://www2.profitwell.com https://tracking.chilipiper.com https://api.chilipiper.com
95
+ https://api.unsplash.com https://boards-api.greenhouse.io https://api.statuspage.io
96
+ https://pgncd.notion.so https://api.statsig.com; font-src ''self'' data: https://cdnjs.cloudflare.com
97
+ https://js.intercomcdn.com; img-src ''self'' data: blob: https: https://platform.twitter.com
98
+ https://syndication.twitter.com https://pbs.twimg.com https://ton.twimg.com;
99
+ style-src ''self'' ''unsafe-inline'' https://cdnjs.cloudflare.com https://github.githubassets.com
100
+ https://js.chilipiper.com https://platform.twitter.com https://ton.twimg.com;
101
+ frame-src https: http:; media-src https: http:'
102
+ X-Webkit-Csp:
103
+ - 'script-src ''self'' ''unsafe-inline'' ''unsafe-eval'' https://gist.github.com
104
+ https://apis.google.com https://cdn.amplitude.com https://api.amplitude.com
105
+ https://hkfxbbdzib.notion.so https://widget.intercom.io https://js.intercomcdn.com
106
+ https://logs-01.loggly.com https://cdn.segment.com https://analytics.pgncs.notion.so
107
+ https://o324374.ingest.sentry.io https://checkout.stripe.com https://js.stripe.com
108
+ https://embed.typeform.com https://admin.typeform.com https://public.profitwell.com
109
+ js.sentry-cdn.com https://js.chilipiper.com https://platform.twitter.com https://cdn.syndication.twimg.com;
110
+ connect-src ''self'' https://msgstore.www.notion.so wss://msgstore.www.notion.so
111
+ ws://localhost:* ws://127.0.0.1:* https://notion-emojis.s3-us-west-2.amazonaws.com
112
+ https://s3-us-west-2.amazonaws.com https://s3.us-west-2.amazonaws.com https://notion-production-snapshots-2.s3.us-west-2.amazonaws.com
113
+ https: http: https://cdn.amplitude.com https://api.amplitude.com https://hkfxbbdzib.notion.so
114
+ https://www.notion.so https://api.embed.ly https://js.intercomcdn.com https://api-iam.intercom.io
115
+ wss://nexus-websocket-a.intercom.io https://logs-01.loggly.com https://cdn.segment.com
116
+ https://api.segment.io https://analytics.pgncs.notion.so https://api.pgncs.notion.so
117
+ https://o324374.ingest.sentry.io https://checkout.stripe.com https://js.stripe.com
118
+ https://cdn.contentful.com https://preview.contentful.com https://images.ctfassets.net
119
+ https://www2.profitwell.com https://tracking.chilipiper.com https://api.chilipiper.com
120
+ https://api.unsplash.com https://boards-api.greenhouse.io https://api.statuspage.io
121
+ https://pgncd.notion.so https://api.statsig.com; font-src ''self'' data: https://cdnjs.cloudflare.com
122
+ https://js.intercomcdn.com; img-src ''self'' data: blob: https: https://platform.twitter.com
123
+ https://syndication.twitter.com https://pbs.twimg.com https://ton.twimg.com;
124
+ style-src ''self'' ''unsafe-inline'' https://cdnjs.cloudflare.com https://github.githubassets.com
125
+ https://js.chilipiper.com https://platform.twitter.com https://ton.twimg.com;
126
+ frame-src https: http:; media-src https: http:'
127
+ Etag:
128
+ - W/"118-qIsZmpzR5IxZzL6qzKmaLGWv15M"
129
+ Vary:
130
+ - Accept-Encoding
131
+ Cf-Cache-Status:
132
+ - DYNAMIC
133
+ Expect-Ct:
134
+ - max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
135
+ Server:
136
+ - cloudflare
137
+ Cf-Ray:
138
+ - 6eeff3fabfe2e920-MRS
139
+ body:
140
+ encoding: UTF-8
141
+ string: '{"object":"user","id":"c1464b55-9bec-417d-9392-dc687623ab28","name":"Notion
142
+ to Orbit","avatar_url":"https://s3-us-west-2.amazonaws.com/public.notion-static.com/f744192d-2a9e-4154-9a1f-1204343d6b52/orbit-logo.png","type":"bot","bot":{"owner":{"type":"workspace","workspace":true}}}'
143
+ recorded_at: Sun, 20 Mar 2022 16:51:32 GMT
144
+ recorded_with: VCR 6.0.0
@@ -3,38 +3,70 @@ require 'spec_helper'
3
3
 
4
4
  RSpec.describe Notion::Api::Endpoints::Blocks do
5
5
  let(:client) { Notion::Client.new }
6
- let(:page_id) { '723578f1-6e51-450c-8ee1-09158c19fd4c' }
6
+ let(:block_id) { '32af3324-ba02-4516-ae88-5728a4d569f4' }
7
7
  let(:children) do
8
8
  [
9
9
  {
10
- "object": 'block',
11
- "type": 'heading_2',
12
- "heading_2": {
13
- "text": [{ "type": 'text', "text": { "content": 'Another Heading' } }]
10
+ 'object': 'block',
11
+ 'type': 'paragraph',
12
+ 'paragraph': {
13
+ 'rich_text': [
14
+ {
15
+ 'type': 'text',
16
+ 'text': {
17
+ 'content': 'Another children'
18
+ }
19
+ }
20
+ ]
14
21
  }
15
22
  }
16
23
  ]
17
24
  end
18
25
 
19
26
  context 'blocks' do
27
+ it 'retrieves', vcr: { cassette_name: 'block' } do
28
+ response = client.block(block_id: block_id)
29
+ expect(response).not_to be_empty
30
+ end
31
+
32
+ it 'updates', vcr: { cassette_name: 'update_block' } do
33
+ to_do = {
34
+ 'text': [
35
+ {
36
+ 'text': { 'content': 'A todo' }
37
+ }
38
+ ],
39
+ 'checked': true
40
+ }
41
+ to_do_block_id = '6e842658-eb3d-4ea9-9bbf-e86104151729'
42
+ response = client.update_block(block_id: to_do_block_id, 'to_do' => to_do)
43
+ expect(response.id).to eql to_do_block_id
44
+ end
45
+
46
+ it 'deletes', vcr: { cassette_name: 'delete_block' } do
47
+ block_id = '77b5d405a5e840229c70b7766d1e8c4b'
48
+ response = client.delete_block(block_id: block_id)
49
+ expect(response).not_to be_empty
50
+ end
51
+
20
52
  it 'children', vcr: { cassette_name: 'block_children' } do
21
- response = client.block_children(id: page_id)
53
+ response = client.block_children(block_id: block_id)
22
54
  expect(response.results.length).to be >= 1
23
- expect(response.results[0].heading_1.text.first.plain_text).to eql 'A Header'
24
- expect(response.results[1].paragraph.text.first.plain_text).to eql 'A paragraph'
55
+ expect(response.results[0].paragraph.rich_text.first.plain_text).to eql 'The first child'
56
+ expect(response.results[1].paragraph.rich_text.first.plain_text).to eql 'The second child'
25
57
  end
26
58
 
27
59
  it 'paginated children', vcr: { cassette_name: 'paginated_block_children' } do
28
60
  children = []
29
- client.block_children(id: page_id, page_size: 1) do |page|
61
+ client.block_children(block_id: block_id, page_size: 1) do |page|
30
62
  children.concat page.results
31
63
  end
32
64
  expect(children.size).to be >= 1
33
65
  end
34
66
 
35
67
  it 'appends', vcr: { cassette_name: 'block_append_children' } do
36
- response = client.block_append_children(id: page_id, children: children)
37
- expect(response.id).to eql page_id
68
+ response = client.block_append_children(block_id: block_id, children: children)
69
+ expect(response.results.first.type).to eql 'paragraph'
38
70
  end
39
71
  end
40
- end
72
+ end
@@ -3,13 +3,13 @@ require 'spec_helper'
3
3
 
4
4
  RSpec.describe Notion::Api::Endpoints::Databases do
5
5
  let(:client) { Notion::Client.new }
6
- let(:database_id) { '89b30a70-ce51-4646-ab4f-5fdcb1d5e76c' }
7
- let(:page_id) { '7cbf38f8-5921-4422-bd3f-a647c3e2544b' }
6
+ let(:database_id) { 'dd428e9dd3fe4171870da7a1902c748b' }
7
+ let(:page_id) { 'c7fd1abe811444eabe779632ea33e581' }
8
8
  let(:title) do
9
9
  [
10
10
  {
11
11
  "text": {
12
- "content": 'Another Notion database'
12
+ "content": 'Orbit 💜 Notion'
13
13
  }
14
14
  }
15
15
  ]
@@ -23,44 +23,39 @@ RSpec.describe Notion::Api::Endpoints::Databases do
23
23
  end
24
24
 
25
25
  context 'databases' do
26
- it 'retrieves', vcr: { cassette_name: 'database' } do
27
- response = client.database(id: database_id)
28
- expect(response.title.first.plain_text).to eql 'A Notion database'
29
- end
30
-
31
26
  it 'queries', vcr: { cassette_name: 'database_query' } do
32
- response = client.database_query(id: database_id)
27
+ response = client.database_query(database_id: database_id)
33
28
  expect(response.results.length).to be >= 1
34
29
  end
35
30
 
31
+ it 'paginated queries', vcr: { cassette_name: 'paginated_database_query' } do
32
+ pages = []
33
+ client.database_query(database_id: database_id, page_size: 1) do |page|
34
+ pages.concat page.results
35
+ end
36
+ expect(pages.size).to be >= 1
37
+ end
38
+
36
39
  it 'creates', vcr: { cassette_name: 'create_database' } do
37
40
  response = client.create_database(
38
41
  parent: { page_id: page_id },
39
42
  title: title,
40
43
  properties: properties
41
44
  )
42
- expect(response.title.first.plain_text).to eql 'Another Notion database'
45
+ expect(response.title.first.plain_text).to eql 'Orbit 💜 Notion'
43
46
  end
44
47
 
45
- it 'paginated queries', vcr: { cassette_name: 'paginated_database_query' } do
46
- pages = []
47
- client.database_query(id: database_id, limit: 1) do |page|
48
- pages.concat page.results
49
- end
50
- expect(pages.size).to be >= 1
51
- end
52
-
53
- it 'lists', vcr: { cassette_name: 'databases_list' } do
54
- response = client.databases_list
55
- expect(response.results.length).to be >= 1
48
+ it 'updates', vcr: { cassette_name: 'update_database' } do
49
+ response = client.update_database(
50
+ database_id: database_id,
51
+ title: title
52
+ )
53
+ expect(response.title.first.plain_text).to eql 'Orbit 💜 Notion'
56
54
  end
57
55
 
58
- it 'paginated lists', vcr: { cassette_name: 'paginated_databases_list' } do
59
- databases = []
60
- client.databases_list(limit: 1) do |page|
61
- databases.concat page.results
62
- end
63
- expect(databases.size).to be >= 1
56
+ it 'retrieves', vcr: { cassette_name: 'database' } do
57
+ response = client.database(database_id: database_id)
58
+ expect(response.title.first.plain_text).to eql 'Orbit 💜 Notion'
64
59
  end
65
60
  end
66
61
  end