class NotionAPI::ImageBlock

good for visual information

Attributes

notion_type[R]
type[R]

Private Class Methods

create(block_id, new_block_id, block_title, target, position_command, request_ids, options) click to toggle source
# File lib/notion_api/notion_types/image_block.rb, line 18
def self.create(block_id, new_block_id, block_title, target, position_command, request_ids, options)
  if !(options[:image])
    raise ArgumentError, "Must specify image as an option. For example: .create(\"block type\", \"block title\", options: {image: \"https://image-domain.com\"})"
  else
    cookies = Core.options["cookies"]
    headers = Core.options["headers"]
    if options[:image].match(/^http:\/\/|^https:\/\//)
      create_hash = Utils::BlockComponents.create(new_block_id, self.notion_type)
      set_parent_alive_hash = Utils::BlockComponents.set_parent_to_alive(block_id, new_block_id)
      block_location_hash = Utils::BlockComponents.block_location_add(block_id, block_id, new_block_id, target, position_command)
      last_edited_time_parent_hash = Utils::BlockComponents.last_edited_time(block_id)
      last_edited_time_child_hash = Utils::BlockComponents.last_edited_time(block_id)
      title_hash = Utils::BlockComponents.title(new_block_id, block_title)
      source_url_hash = Utils::BlockComponents.source(new_block_id, options[:image])
      display_source_url_hash = Utils::BlockComponents.display_source(new_block_id, options[:image])

      operations = [
        create_hash,
        set_parent_alive_hash,
        block_location_hash,
        last_edited_time_parent_hash,
        last_edited_time_child_hash,
        title_hash,
        source_url_hash,
        display_source_url_hash,
      ]

      request_url = URLS[:UPDATE_BLOCK]
      request_body = Utils::BlockComponents.build_payload(operations, request_ids)
      response = HTTParty.post(
        request_url,
        body: request_body.to_json,
        cookies: cookies,
        headers: headers,
      )
      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}.
          Please try again, and if issues persist open an issue in GitHub.";           end

      self.new(new_block_id, block_title, block_id)
    else
      raise ArgumentError, "Currently, images can only be created through a public image URL."
    end
  end
end

Public Instance Methods

type() click to toggle source
# File lib/notion_api/notion_types/image_block.rb, line 8
def type
  NotionAPI::ImageBlock.notion_type
end