Module: SlackValidBlockKit::Validator::Surface

Included in:
Runner
Defined in:
lib/slack_valid_block_kit/validator/surface.rb

Constant Summary collapse

i(type title blocks close submit  callback_id clear_on_close notify_on_close external_id)
HOME_PROPERTIES =
i(type blocks  callback_id external_id)

Instance Method Summary collapse

Instance Method Details

#validate_blocks(hash, path, options = nil) ⇒ Object



45
46
47
48
49
50
# File 'lib/slack_valid_block_kit/validator/surface.rb', line 45

def validate_blocks(hash, path, options = nil)
  validate_for(hash[:blocks], "#{path}.blocks", Array, true)
  Array(hash[:blocks]).each_with_index do |e, i|
    validate(e, "#{path}.blocks[#{i}]", :layout_blocks_for_message)
  end
end

#validate_home(hash, path, options = nil) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/slack_valid_block_kit/validator/surface.rb', line 30

def validate_home(hash, path, options = nil)
  validate_for_properties(hash, path, HOME_PROPERTIES)
  validate_for(hash[:type], "#{path}.type", String, true, only: ["home"])
  validate_for_plain_text(hash[:title], "#{path}.title", true, 24)

  validate_for(hash[:blocks], "#{path}.blocks", Array, true, max: 100)
  Array(hash[:blocks]).each_with_index do |e, i|
    validate(e, "#{path}.blocks[#{i}]", :layout_blocks_for_home)
  end

  validate_for(hash[:private_metadata], "#{path}.private_metadata", String, false, max: 3000)
  validate_for(hash[:callback_id], "#{path}.callback_id", String, false, max: 255)
  validate_for(hash[:external_id], "#{path}.external_id", String, false)
end

#validate_modal(hash, path, options = nil) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/slack_valid_block_kit/validator/surface.rb', line 6

def validate_modal(hash, path, options = nil)
  validate_for_properties(hash, path, MODAL_PROPERTIES)
  validate_for(hash[:type], "#{path}.type", String, true, only: ["modal"])
  validate_for_plain_text(hash[:title], "#{path}.title", true, 24)

  validate_for(hash[:blocks], "#{path}.blocks", Array, true, max: 100)
  Array(hash[:blocks]).each_with_index do |e, i|
    validate(e, "#{path}.blocks[#{i}]", :layout_blocks_for_modal)
  end

  validate_for_plain_text(hash[:close], "#{path}.close", false, 24)
  validate_for_plain_text(hash[:submit], "#{path}.submit", false, 24)

  if hash[:submit].nil? && Array(hash[:blocks]).select { |b| b[:type] == "input" }.size > 0
    add_error(path, :require_submit_with_input)
  end

  validate_for(hash[:private_metadata], "#{path}.private_metadata", String, false, max: 3000)
  validate_for(hash[:callback_id], "#{path}.callback_id", String, false, max: 255)
  validate_for(hash[:clear_on_close], "#{path}.clear_on_close", :bool, false)
  validate_for(hash[:notify_on_close], "#{path}.notify_on_close", :bool, false)
  validate_for(hash[:external_id], "#{path}.external_id", String, false)
end