notion 1.1.3 → 1.1.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a6dfa3bb58bd4850c061ed6cf0efbb11ad3548f9dbcfb773b04fdb36d99cf356
4
- data.tar.gz: 1be5e4c8dc4975fc2de62bc802b296b283cff406a943d3f5fa88980ecfa07b65
3
+ metadata.gz: f33fd46038d04e6945365a27f4c06bf271606c26738e0f829b303cf62bbb516d
4
+ data.tar.gz: 92e51354718ea8c3d947e77f1aa9073cb654312e8783f9e375d246b8f2145188
5
5
  SHA512:
6
- metadata.gz: 6291929f81e39755067265260f3ff94d4e691f420713af7cb7a1b7505a9ab097bdd78720bcc2d344df555cc20b106203aae0bd09eea52a041e8c4a8057b9b4a8
7
- data.tar.gz: de33fa730ee063bb6e54877ce959e1ca7f8bde1345ae90db9c1a368e8c08ad37dec54f473d99c38c6bc26f3e97e17741bba92e3b09cd1d6cb64b5fdce629723b
6
+ metadata.gz: b0c40153c1ec62514f1c6cea7c3a1c6e48bd5180c1eff123b92873527368ca64922a24ab1a9de28c33084a1e248e8a9d702456f3b7efc412bca9b9487dbb947e
7
+ data.tar.gz: a67029c37053b49be748fb5268ec1022be91194723fd9a4e68657cbc1baf9d0d1e13a5cf75e1f23dc2a4851ae611cf511c46aff2afc59e0fbcad347e256ef6c3
@@ -17,6 +17,7 @@ require_relative "notion_types/table_of_contents_block"
17
17
  require_relative "notion_types/text_block"
18
18
  require_relative "notion_types/todo_block"
19
19
  require_relative "notion_types/toggle_block"
20
+ require_relative "notion_types/link_block"
20
21
 
21
22
  Classes = NotionAPI.constants.select { |c| NotionAPI.const_get(c).is_a? Class and c.to_s != 'BlockTemplate' and c.to_s != 'Core' and c.to_s !='Client' }
22
23
  notion_types = []
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'core'
4
- require_relative 'blocks'
3
+ require_relative "core"
4
+ require_relative "blocks"
5
5
 
6
6
  module NotionAPI
7
7
  # acts as the 'main interface' to the methods of this package.
@@ -72,6 +72,35 @@ module NotionAPI
72
72
  jsonified_record_response["block"][clean_id]["value"]["content"] || []
73
73
  end
74
74
 
75
+ def extract_id(url_or_id)
76
+ # ! parse and clean the URL or ID object provided.
77
+ # ! url_or_id -> the block ID or URL : ``str``
78
+ http_or_https = url_or_id.match(/^(http|https)/) # true if http or https in url_or_id...
79
+ collection_view_match = url_or_id.match(/(\?v=)/)
80
+
81
+ if (url_or_id.length == 36) && ((url_or_id.split("-").length == 5) && !http_or_https)
82
+ # passes if url_or_id is perfectly formatted already...
83
+ url_or_id
84
+ elsif (http_or_https && (url_or_id.split("-").last.length == 32)) || (!http_or_https && (url_or_id.length == 32)) || (collection_view_match)
85
+ # passes if either:
86
+ # 1. a URL is passed as url_or_id and the ID at the end is 32 characters long or
87
+ # 2. a URL is not passed and the ID length is 32 [aka unformatted]
88
+ pattern = [8, 13, 18, 23]
89
+ if collection_view_match
90
+ id_without_view = url_or_id.split("?")[0]
91
+ clean_id = id_without_view.split("/").last
92
+ pattern.each { |index| clean_id.insert(index, "-") }
93
+ clean_id
94
+ else
95
+ id = url_or_id.split("-").last
96
+ pattern.each { |index| id.insert(index, "-") }
97
+ id
98
+ end
99
+ else
100
+ raise ArgumentError, "Expected a Notion page URL or a page ID. Please consult the documentation for further information."
101
+ end
102
+ end
103
+
75
104
  private
76
105
 
77
106
  def get_notion_id(body)
@@ -205,34 +234,34 @@ module NotionAPI
205
234
  jsonified_record_response["block"][clean_id]["value"]["view_ids"] || []
206
235
  end
207
236
 
208
- def extract_id(url_or_id)
209
- # ! parse and clean the URL or ID object provided.
210
- # ! url_or_id -> the block ID or URL : ``str``
211
- http_or_https = url_or_id.match(/^(http|https)/) # true if http or https in url_or_id...
212
- collection_view_match = url_or_id.match(/(\?v=)/)
213
-
214
- if (url_or_id.length == 36) && ((url_or_id.split("-").length == 5) && !http_or_https)
215
- # passes if url_or_id is perfectly formatted already...
216
- url_or_id
217
- elsif (http_or_https && (url_or_id.split("-").last.length == 32)) || (!http_or_https && (url_or_id.length == 32)) || (collection_view_match)
218
- # passes if either:
219
- # 1. a URL is passed as url_or_id and the ID at the end is 32 characters long or
220
- # 2. a URL is not passed and the ID length is 32 [aka unformatted]
221
- pattern = [8, 13, 18, 23]
222
- if collection_view_match
223
- id_without_view = url_or_id.split("?")[0]
224
- clean_id = id_without_view.split("/").last
225
- pattern.each { |index| clean_id.insert(index, "-") }
226
- clean_id
227
- else
228
- id = url_or_id.split("-").last
229
- pattern.each { |index| id.insert(index, "-") }
230
- id
231
- end
232
- else
233
- raise ArgumentError, "Expected a Notion page URL or a page ID. Please consult the documentation for further information."
234
- end
235
- end
237
+ # def extract_id(url_or_id)
238
+ # # ! parse and clean the URL or ID object provided.
239
+ # # ! url_or_id -> the block ID or URL : ``str``
240
+ # http_or_https = url_or_id.match(/^(http|https)/) # true if http or https in url_or_id...
241
+ # collection_view_match = url_or_id.match(/(\?v=)/)
242
+
243
+ # if (url_or_id.length == 36) && ((url_or_id.split("-").length == 5) && !http_or_https)
244
+ # # passes if url_or_id is perfectly formatted already...
245
+ # url_or_id
246
+ # elsif (http_or_https && (url_or_id.split("-").last.length == 32)) || (!http_or_https && (url_or_id.length == 32)) || (collection_view_match)
247
+ # # passes if either:
248
+ # # 1. a URL is passed as url_or_id and the ID at the end is 32 characters long or
249
+ # # 2. a URL is not passed and the ID length is 32 [aka unformatted]
250
+ # pattern = [8, 13, 18, 23]
251
+ # if collection_view_match
252
+ # id_without_view = url_or_id.split("?")[0]
253
+ # clean_id = id_without_view.split("/").last
254
+ # pattern.each { |index| clean_id.insert(index, "-") }
255
+ # clean_id
256
+ # else
257
+ # id = url_or_id.split("-").last
258
+ # pattern.each { |index| id.insert(index, "-") }
259
+ # id
260
+ # end
261
+ # else
262
+ # raise ArgumentError, "Expected a Notion page URL or a page ID. Please consult the documentation for further information."
263
+ # end
264
+ # end
236
265
 
237
266
  def extract_collection_schema(collection_id, view_id, response = {})
238
267
  # ! retrieve the collection scehma. Useful for 'building' the backbone for a table.
@@ -0,0 +1,51 @@
1
+ module NotionAPI
2
+
3
+ # simiilar to code block but for mathematical functions.
4
+ class LinkBlock < BlockTemplate
5
+ @notion_type = "link_to_page"
6
+ @type = "link_to_page"
7
+
8
+ def type
9
+ NotionAPI::LinkBlock.notion_type
10
+ end
11
+
12
+ class << self
13
+ attr_reader :notion_type, :type
14
+ end
15
+
16
+ def self.create(block_id, new_block_id, block_title, target, position_command, request_ids, options)
17
+ block_title = super.extract_id(block_title)
18
+
19
+ cookies = Core.options["cookies"]
20
+ headers = Core.options["headers"]
21
+
22
+ create_block_hash = Utils::BlockComponents.create(new_block_id, self.notion_type)
23
+ block_location_hash = Utils::BlockComponents.block_location_add(block_id, block_id, block_title, new_block_id, position_command)
24
+ last_edited_time_hash = Utils::BlockComponents.last_edited_time(block_id)
25
+ remove_item_hash = Utils::BlockComponents.block_location_remove( super.parent_id, new_block_id)
26
+
27
+ operations = [
28
+ create_block_hash,
29
+ block_location_hash,
30
+ last_edited_time_hash,
31
+ remove_item_hash
32
+ ]
33
+
34
+ request_url = URLS[:UPDATE_BLOCK]
35
+ request_body = Utils::BlockComponents.build_payload(operations, request_ids)
36
+
37
+ response = HTTParty.post(
38
+ request_url,
39
+ body: request_body.to_json,
40
+ cookies: cookies,
41
+ headers: headers,
42
+ )
43
+
44
+ unless response.code == 200; raise "There was an issue completing your request. Here is the response from Notion: #{response.body}, and here is the payload that was sent: #{operations}.
45
+ Please try again, and if issues persist open an issue in GitHub."; end
46
+
47
+ self.new(new_block_id, block_title, block_id)
48
+ end
49
+ end
50
+ end
51
+
@@ -11,7 +11,7 @@ module Utils
11
11
  class BlockComponents
12
12
  # ! Each function defined here builds one component that is included in each request sent to Notions backend.
13
13
  # ! Each request sent will contain multiple components.
14
- # TODO figure this out
14
+
15
15
  def self.build_payload(operations, request_ids)
16
16
  # ! properly formats the payload for Notions backend.
17
17
  # ! operations -> an array of hashes that define the operations to perform : ``Array[Hash]``
@@ -351,14 +351,14 @@ module Utils
351
351
  # ! new_block_id -> the ID of the new ImageBlock: ``str``
352
352
  # ! block_url -> the URL of the ImageBlock: ``str``
353
353
  {
354
- "id": new_block_id,
355
- "table": "block",
356
- "path": [
354
+ id: new_block_id,
355
+ table: "block",
356
+ path: [
357
357
  "format",
358
358
  ],
359
- "command": "update",
360
- "args": {
361
- "display_source": block_url,
359
+ command: "update",
360
+ args: {
361
+ display_source: block_url,
362
362
  },
363
363
  }
364
364
  end
@@ -1,3 +1,3 @@
1
1
  module NotionAPI
2
- VERSION = '1.1.3'
2
+ VERSION = '1.1.4'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: notion
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.3
4
+ version: 1.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dan Murphy
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-02 00:00:00.000000000 Z
11
+ date: 2021-01-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -42,16 +42,16 @@ dependencies:
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: 2.1.0
47
+ version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: 2.1.0
54
+ version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -122,6 +122,7 @@ files:
122
122
  - lib/notion_api/notion_types/header_block.rb
123
123
  - lib/notion_api/notion_types/image_block.rb
124
124
  - lib/notion_api/notion_types/latex_block.rb
125
+ - lib/notion_api/notion_types/link_block.rb
125
126
  - lib/notion_api/notion_types/numbered_block.rb
126
127
  - lib/notion_api/notion_types/page_block.rb
127
128
  - lib/notion_api/notion_types/quote_block.rb