module Enki::Confluence

Public Instance Methods

process_dir(src_dir:) click to toggle source
# File lib/enki/confluence.rb, line 13
def process_dir(src_dir:)
  confluence_session do |client|
    Dir.glob("#{src_dir}/**/*.html").each do |file|
      upload_with_client(file: file, client: client)
    end
  end
end
upload(file:, title: nil, space: nil) click to toggle source
# File lib/enki/confluence.rb, line 7
def upload(file:, title: nil, space: nil)
  confluence_session do |client|
    upload_with_client(file: file, client: client, title: title, space: space)
  end
end

Private Instance Methods

confluence_session() { |client| ... } click to toggle source
# File lib/enki/confluence.rb, line 56
def confluence_session
  options = {
    url: Enki.configuration.confluence_url,
    username: Enki.configuration.confluence_user,
    password: Enki.configuration.confluence_password
  }

  ::Confluence::Session.new(options) do |client|
    yield(client)
  end
end
upload_with_client(file:, client:, title: nil, space: nil) click to toggle source
# File lib/enki/confluence.rb, line 23
def upload_with_client(file:, client:, title: nil, space: nil)
  title ||= File.basename(file, '.*')
  space ||= Enki.configuration.confluence_space

  content = File.read(file)

  old_page = begin
    client.get_page(space, title)
  rescue ::Confluence::Error
    # Page does not exist yet
    nil
  end

  if old_page
    Enki.logger.info "Updating #{old_page["title"].inspect} in #{old_page["space"].inspect}..."
    client.update_page({
      "id" => old_page["id"],
      "space" => old_page["space"],
      "title" => old_page["title"],
      "content" => content,
      "version" => old_page["version"],
    }, {})
  else
    Enki.logger.info "Creating #{title.inspect} in #{space.inspect}..."
    client.store_page({
      "space" => space,
      "title" => title,
      "content" => content,
    })
  end
  Enki.logger.info "Done!"
end