notion 1.0.1 → 1.0.6

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.
@@ -0,0 +1,16 @@
1
+ module NotionAPI
2
+
3
+ # good for just about anything (-:
4
+ class TextBlock < BlockTemplate
5
+ @notion_type = 'text'
6
+ @type = 'text'
7
+
8
+ def type
9
+ NotionAPI::TextBlock.notion_type
10
+ end
11
+
12
+ class << self
13
+ attr_reader :notion_type, :type
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,60 @@
1
+ module NotionAPI
2
+
3
+ # To-Do block: best for checklists and tracking to-dos.
4
+ class TodoBlock < BlockTemplate
5
+ @notion_type = 'to_do'
6
+ @type = 'to_do'
7
+
8
+ def type
9
+ NotionAPI::TodoBlock.notion_type
10
+ end
11
+
12
+ class << self
13
+ attr_reader :notion_type, :type
14
+ end
15
+
16
+ def checked=(checked_value)
17
+ # ! change the checked property of the Todo Block.
18
+ # ! checked_value -> boolean value used to determine whether the block should be checked [yes] or not [no] : ``str``
19
+ # set static variables for request
20
+ cookies = Core.options['cookies']
21
+ headers = Core.options['headers']
22
+ request_url = URLS[:UPDATE_BLOCK]
23
+
24
+ # set unique values for request
25
+ request_id = extract_id(SecureRandom.hex(16))
26
+ transaction_id = extract_id(SecureRandom.hex(16))
27
+ space_id = extract_id(SecureRandom.hex(16))
28
+ request_ids = {
29
+ request_id: request_id,
30
+ transaction_id: transaction_id,
31
+ space_id: space_id
32
+ }
33
+
34
+ if %w[yes no].include?(checked_value.downcase)
35
+ checked_hash = Utils::BlockComponents.checked_todo(@id, checked_value.downcase)
36
+ last_edited_time_parent_hash = Utils::BlockComponents.last_edited_time(@parent_id)
37
+ last_edited_time_child_hash = Utils::BlockComponents.last_edited_time(@id)
38
+
39
+ operations = [
40
+ checked_hash,
41
+ last_edited_time_parent_hash,
42
+ last_edited_time_child_hash
43
+ ]
44
+ request_body = build_payload(operations, request_ids)
45
+ response = HTTParty.post(
46
+ request_url,
47
+ body: request_body.to_json,
48
+ cookies: cookies,
49
+ headers: headers
50
+ )
51
+ 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}.
52
+ Please try again, and if issues persist open an issue in GitHub."; end
53
+
54
+ true
55
+ else
56
+ false
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,16 @@
1
+ module NotionAPI
2
+
3
+ # Toggle block: best for storing children blocks
4
+ class ToggleBlock < BlockTemplate
5
+ @notion_type = 'toggle'
6
+ @type = 'toggle'
7
+
8
+ def type
9
+ NotionAPI::ToggleBlock.notion_type
10
+ end
11
+
12
+ class << self
13
+ attr_reader :notion_type, :type
14
+ end
15
+ end
16
+ end
@@ -127,7 +127,7 @@ module Utils
127
127
  }
128
128
  end
129
129
 
130
- def self.duplicate(block_type, block_title, block_id, new_block_id, user_notion_id, contents)
130
+ def self.duplicate(block_type, block_title, block_id, new_block_id, user_notion_id, contents, properties, formatting)
131
131
  # ! payload for duplicating a block. Most properties should be
132
132
  # ! inherited from the block class the method is invoked on.
133
133
  # ! block_type -> type of block that is being duplicated : ``cls``
@@ -150,9 +150,8 @@ module Utils
150
150
  id: new_block_id,
151
151
  version: 10,
152
152
  type: block_type,
153
- properties: {
154
- title: [[block_title]],
155
- },
153
+ properties: properties,
154
+ format: formatting,
156
155
  content: contents, # root-level blocks
157
156
  created_time: timestamp,
158
157
  last_edited_time: timestamp,
@@ -274,6 +273,14 @@ module Utils
274
273
  },
275
274
  }
276
275
  end
276
+ def self.add_emoji_icon(block_id, icon)
277
+ {
278
+ id: block_id,
279
+ table:"block",
280
+ path:["format","page_icon"],
281
+ command:"set","args": icon
282
+ }
283
+ end
277
284
  end
278
285
 
279
286
  class CollectionViewComponents
@@ -547,6 +554,30 @@ module Utils
547
554
  args: args,
548
555
  }
549
556
  end
557
+
558
+ def self.update_property_value(page_id, column_name, new_value)
559
+ # ! update the specified column_name to new_value
560
+ # ! page_id -> the ID of the page: ``str``
561
+ # ! column_name -> the name of the column ["property"] to update: ``str``
562
+ # ! new_value -> the new value to assign to that column ["property"]: ``str``
563
+ table = "block"
564
+ path = [
565
+ "properties",
566
+ column_name
567
+ ]
568
+ command = "set"
569
+ args = [[
570
+ new_value
571
+ ]]
572
+
573
+ {
574
+ id: page_id,
575
+ table: table,
576
+ path: path,
577
+ command: command,
578
+ args: args
579
+ }
580
+ end
550
581
  end
551
582
 
552
583
  def build_payload(operations, request_ids)
@@ -1,3 +1,3 @@
1
1
  module NotionAPI
2
- VERSION = '1.0.1'
2
+ VERSION = '1.0.6'
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.0.1
4
+ version: 1.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dan Murphy
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-11-27 00:00:00.000000000 Z
11
+ date: 2020-12-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -113,6 +113,25 @@ files:
113
113
  - lib/notion_api/client.rb
114
114
  - lib/notion_api/core.rb
115
115
  - lib/notion_api/markdown.rb
116
+ - lib/notion_api/notion_types/bulleted_block.rb
117
+ - lib/notion_api/notion_types/callout_block.rb
118
+ - lib/notion_api/notion_types/code_block.rb
119
+ - lib/notion_api/notion_types/collection_view_blocks.rb
120
+ - lib/notion_api/notion_types/column_list_block.rb
121
+ - lib/notion_api/notion_types/divider_block.rb
122
+ - lib/notion_api/notion_types/header_block.rb
123
+ - lib/notion_api/notion_types/image_block.rb
124
+ - lib/notion_api/notion_types/latex_block.rb
125
+ - lib/notion_api/notion_types/numbered_block.rb
126
+ - lib/notion_api/notion_types/page_block.rb
127
+ - lib/notion_api/notion_types/quote_block.rb
128
+ - lib/notion_api/notion_types/sub_header_block.rb
129
+ - lib/notion_api/notion_types/sub_sub_header.rb
130
+ - lib/notion_api/notion_types/table_of_contents_block.rb
131
+ - lib/notion_api/notion_types/template.rb
132
+ - lib/notion_api/notion_types/text_block.rb
133
+ - lib/notion_api/notion_types/todo_block.rb
134
+ - lib/notion_api/notion_types/toggle_block.rb
116
135
  - lib/notion_api/utils.rb
117
136
  - lib/notion_api/version.rb
118
137
  homepage: https://danmurphy1217.github.io/notion-ruby/