No release in over 3 years
Low commit activity in last 3 years
Ruby REST API Client to create, update, and view pages
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

~> 2.3, >= 2.3.7
~> 2.3, >= 2.3.1
~> 1.6, >= 1.6.8
~> 2.0, >= 2.0.0
 Project Readme

Ruby Confluence REST API Client

Gem Version

Installation

gem install confluence-rest-api

Usage

require 'confluence-rest-api'

rest_server = 'https://myserver.com'
user_name   = 'username'
password    = 'password'
space_key   = 'space'

##################################################################
# A connection to the client must be done before any page requests
##################################################################
client  = ConfluenceClient.new(rest_server, user_name, password)

#################################
# Query an existing page by title
#################################
page = PageObject.new('page_title', space_key)
if page.id.nil? 
    puts '*** WARNING: Unable to open page: page_title'
else
    puts "Body:         #{page.rendered_body}"
    puts "Fully styled  #{page.styled_view}"
    puts "ID:           #{page.id}"
    puts "Status:       #{page.status}"
    puts "Version:      #{page.version}"
    puts "Created By:   #{page.created_by}"
    puts "Date Created: #{page.created}"
    puts "Date Updated: #{page.last_update}"
    puts "Page URL:     #{page.url}"
end

###############################
# Query an existing page by id
###############################
page = PageObject.new(123456789, space_key)
if page.title.nil? 
    puts '*** WARNING: Unable to open page with id: 123456789'
else
    puts "Body:         #{page.rendered_body}"
    puts "Fully styled  #{page.styled_view}"
    puts "ID:           #{page.id}"
    puts "Status:       #{page.status}"
    puts "Version:      #{page.version}"
    puts "Created By:   #{page.created_by}"
    puts "Date Created: #{page.created}"
    puts "Date Updated: #{page.last_update}"
    puts "Page URL:     #{page.url}"
end

###########################################################
# Create a new page with a page titled "Home" as its parent
###########################################################
home_page = PageObject.new('Home', space_key)
unless home_page.id.nil?
  client.create_page_with_parent('My Page Title', space_key, 'My Page Body Content', home_page.id)
end

#############################
# Add an attachment to a page
#############################
page_obj = PageObject.new('My Page Title', space_key)
unless page_obj.id.nil?
  img_base_name = 'my/image/location'
  image = 'my_image.png'
  if page_obj.attach_binary_file(image, img_base_name).nil?
    puts "*** WARNING: Image attachment #{image} for #{title} was not successful."
  else
    puts "Image attachment #{image} for #{page_obj.title} was successful."
  end
end

##################################
# Remove an attachment from a page
##################################
page_obj = PageObject.new('My Page Title', space_key)
id = page_obj.attachment_id('my_image.png')
if id.nil?
  puts "Attachment doesn't exist."
elsif page_obj.delete_attachment(id).nil?
    puts "*** WARNING: Attachment with ID #{id} was not deleted."
else
    puts "Attachment with ID #{id} was deleted"
end


##################################################
# Get an array listing of the page attachment data
##################################################
page_obj = PageObject.new('My Page Title', space_key)
att_array = get_all_attachments(page_obj.id)
att_array.each do |line|
  entry_hash = line.to_hash
  title = entry_hash["title"]
  uri   = entry_hash["_links"]["download"]
  puts "Attachment title: #{title}"
  puts "Attachment link : #{uri}"
end

######################################################
# Save all attachments of a page to the given location
######################################################
page_obj = PageObject.new('My Page Title', space_key)
page_obj.save_file_attachments(page_obj.id, './')

################################################
# Get all labels associated with a given page ID
################################################
page_obj = PageObject.new('My Page Title', space_key)
page_labels = page_obj.labels(page_obj.id)
puts "Page Labels for #{page_obj.title}: #{page_labels}"

#########################
# Adding labels to a page
#########################
page_obj = PageObject.new('My Page Title', space_key)
new_labels = ['my_label1','my_label2']
page_obj.add_labels(new_labels)

#############################
# Deleting labels from a page
#############################
page_obj = PageObject.new('My Page Title', space_key)
del_labels = ['my_label1','my_label2']
page_obj.delete_labels(del_labels)

###############
# Delete a page
###############
page_obj = PageObject.new('My Page Title', space_key)
if page_obj.delete_page(page_obj.id).nil?
  puts "*** WARNING: Page with ID #{page_obj.id} was not deleted."
else
  puts "Page with ID #{page_obj.id} was deleted."
end

TODO

  1. Add tests